Magiczzz @ 2023-03-08 22:01:45
开始我用的float有两个测试没过(应该是精度不够高,导致算不到后面的数),但是在devc++上面输出了结果(当然是错误结果),但是精度不够高,就跳不出循环啊,怎么还有了错误输出呢?是我在哪里理解错了吗?
后来把float改为double测试数据就都通过了
下面是错误代码
#include<iostream>
using namespace std;
int main()
{
int n;
cin>>n;
float sum=0;
int i=1;
for(i=1;sum<=n;i++)
{
sum+=(1.0/i);
}
cout<<i-1<<endl;
return 0;
}
by mashduihca @ 2023-03-08 22:05:19
1+2,=2叫精度不高,等于4也叫精度不高。
by MatrixGroup @ 2023-03-08 22:14:08
@Magiczzz mashduihca 正解。
by MatrixGroup @ 2023-03-08 22:16:53
假如精度是 0.1
by Magiczzz @ 2023-03-09 22:16:36
@Breakingtdasc 请问为什么第二个式子算出来等于一呀
by Magiczzz @ 2023-03-09 22:18:15
@mashduihca 为什么结果会出现比实际值还大的情况呢
by mashduihca @ 2023-03-09 22:43:20
@Magiczzz IEEE754的分数部分是0舍1入。
by MatrixGroup @ 2023-03-09 22:48:16
@Magiczzz 额,
by MatrixGroup @ 2023-03-09 22:49:00
@Magiczzz
为什么结果会出现比实际值还大的情况呢
by Magiczzz @ 2023-03-10 11:42:59
@Breakingtdasc 谢谢!
by Magiczzz @ 2023-03-10 11:43:18
@mashduihca 谢谢!