C++雙

2016-06-09 29 views
1

精度我有類似C++雙

double d1=4.0; 
double d2=8.0; 

我試圖打印使用cout這些雙值之和。 是否可以在不設定精度的情況下以精確的精度打印總和?

如果值

double d1=4.23; 
double d2=4.0; 

總和應打印8.23沒有任何額外的零。

+0

這應該有所幫助:http://stackoverflow.com/questions/554063/how-do-i-print-a-double-value-with-full-precision-using-cout – nephtes

+0

@nephtes OP表示_without設置precesion_ –

+0

最近有很多問題想用精確的表示法來確定結果。 – Hurkyl

回答

2

本機浮點值不能以這種方式工作。

只要你設置一個double

double d1=4.23; 

然後就是d被設置爲實際值,大約,4.2300000000000004263256

這種情況發生了蝙蝠的權利。不要通過Go。不要收200美元。即使在您計算總和之前,爲時已晚,因爲4.23不是基數2浮點表示中的可表示數。

要達到精確的非整數數學的唯一方法是使用專門爲此目的設計的庫,如GMPmpq_t有理數。

+0

@FirstStep - 感謝您指出我的錯字;我實際上跑了一個快速測試,而不是自己計算這個,並且發現了所有東西......但是基本點仍然是正確的。 –