我正在尝试获取帐篷方程的固定点。在给定的初始条件下,解决方案必须为0.6。当我将float用于x0时,一切正常,但是当我将x0定义为double时,解决方案在第55次迭代中变为0.59999,这会在下一次迭代中导致进一步的变化,等等。为什么选择数据类型时有这样的差异?导致错误的双数据类型
using namespace std;
#include <iostream>
main()
{
double x0=.6;
for (int i=0;i<100;i++)
{
if(x0<.5)
x0=1.5*x0;
else
x0=1.5*(1-x0);
cout << i << "\t" << x0 << endl;
}
}
我已经发布了结果图片。 Comparison of solutions - Float and Double
你被四舍五入的欺骗。添加'cout << setprecision(100)'将打印所有的数字。并访问该问题[浮点数学是否被破坏?](http://stackoverflow.com/questions/588004/is-floating-point-math-broken)。 – molbdnilo
如果可能,最好将文本结果添加为文本。您附加的图像可以用您问题中的代码块文字编写。 –