我正在嘗試獲取帳篷方程的固定點。在給定的初始條件下,解決方案必須爲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
如果可能,最好將文本結果添加爲文本。您附加的圖像可以用您問題中的代碼塊文字編寫。 –