2013-12-16 35 views
0

有沒有辦法在的C++上設置一個小數點的最終值爲浮點值?例如,如果我將多次記錄爲浮點值,我很可能會生成不同的結果(以小數位數的方式),並且想要生成相同長度的數字,即如果一個數字返回爲1.33並且那裏是其他號碼返回,如說1.333我想使第一個結果爲1.330控制小數位數

據我所知,有限制小數位數的方法,如setprecision(),但我不想放鬆我的時代的準確性。

+0

http://www.cplusplus.com/reference/cstdio/printf/ – clcto

+0

使用setprecision(),但預先計算的準確性。 –

+0

http://www.cplusplus.com/reference/iomanip/setprecision/ –

回答

4

你似乎混淆兩件事情:浮點計算在C++中的實際精度,並用C++流打印時的float(或double,或long double)值的格式(如COUT,例如)。

第一個取決於硬件/平臺,除了在floatdouble之間選擇外,您無法控制它。如果你需要比long double更好的精度,你需要一個任意精度數學庫,例如GMPLIB

打印時控制點後位數/格式是比較容易的,例如參見這個問題:Set the digits after decimal point

+0

最簡單*的方式來獲得更多的精度,'float'給你的是'double'或'long double'。 – dan04

+0

是的,忘記了,謝謝:) – piokuc

1

如果您需要的是小數點是否folat後限制數字,雙重或長雙則方法是使用(setprecision)。單獨使用時,它將包含小數點前的數字,並且如果小數點後的數字小於要設置的精度,則不會在它們之後加零。解決方案是使用固定和顯示點。所以如果你想在小數點後面設置精度爲3位數,那麼在顯示或計算這些值之前寫下這一行。

cout<<fixed<<showpoint<<setprecision(3);