1
精度我有類似C++雙
double d1=4.0;
double d2=8.0;
我試圖打印使用cout
這些雙值之和。 是否可以在不設定精度的情況下以精確的精度打印總和?
如果值
double d1=4.23;
double d2=4.0;
總和應打印8.23
沒有任何額外的零。
精度我有類似C++雙
double d1=4.0;
double d2=8.0;
我試圖打印使用cout
這些雙值之和。 是否可以在不設定精度的情況下以精確的精度打印總和?
如果值
double d1=4.23;
double d2=4.0;
總和應打印8.23
沒有任何額外的零。
本機浮點值不能以這種方式工作。
只要你設置一個double
:
double d1=4.23;
然後就是d
被設置爲實際值,大約,4.2300000000000004263256
這種情況發生了蝙蝠的權利。不要通過Go。不要收200美元。即使在您計算總和之前,爲時已晚,因爲4.23不是基數2浮點表示中的可表示數。
要達到精確的非整數數學的唯一方法是使用專門爲此目的設計的庫,如GMP的mpq_t
有理數。
@FirstStep - 感謝您指出我的錯字;我實際上跑了一個快速測試,而不是自己計算這個,並且發現了所有東西......但是基本點仍然是正確的。 –
這應該有所幫助:http://stackoverflow.com/questions/554063/how-do-i-print-a-double-value-with-full-precision-using-cout – nephtes
@nephtes OP表示_without設置precesion_ –
最近有很多問題想用精確的表示法來確定結果。 – Hurkyl