2013-01-02 42 views
0

默認情況下,我獲得4位精度,當我使用setprecision(6)時,變量的最後幾位隨機出現,如1/3=0.333369如何在C++中打印6位精度的float值?

+1

它看起來像你被'float'類型本身所限制,爲什麼不使用'double'?但即使這種類型也有侷限性。 – fge

+2

給出一個完整的例子 –

+0

@Potatoswatter IEEE 754浮動不能像那樣工作;) – fge

回答

4

float由於使用了24位二進制數字來存儲數字的位數,所以其精度約爲7個十進制數字。就產量而言,setprecision(6)可以滿足您的所有需求。

這很可能是您正在失去精確度,例如通過減去兩個具有相似值的數字並打印結果。快速解決方案是將計算更改爲使用doublelong double。但是要對浮點結果的精度做出任何保證,您需要了解FP如何工作並分析公式計算方式。

參見What Every Computer Scientist Should Know About Floating-Point Arithmetic