有沒有辦法在的C++上設置一個小數點的最終值爲浮點值?例如,如果我將多次記錄爲浮點值,我很可能會生成不同的結果(以小數位數的方式),並且想要生成相同長度的數字,即如果一個數字返回爲1.33
並且那裏是其他號碼返回,如說1.333
我想使第一個結果爲1.330
。控制小數位數
據我所知,有限制小數位數的方法,如setprecision()
,但我不想放鬆我的時代的準確性。
有沒有辦法在的C++上設置一個小數點的最終值爲浮點值?例如,如果我將多次記錄爲浮點值,我很可能會生成不同的結果(以小數位數的方式),並且想要生成相同長度的數字,即如果一個數字返回爲1.33
並且那裏是其他號碼返回,如說1.333
我想使第一個結果爲1.330
。控制小數位數
據我所知,有限制小數位數的方法,如setprecision()
,但我不想放鬆我的時代的準確性。
你似乎混淆兩件事情:浮點計算在C++中的實際精度,並用C++流打印時的float
(或double
,或long double
)值的格式(如COUT,例如)。
第一個取決於硬件/平臺,除了在float
和double
之間選擇外,您無法控制它。如果你需要比long double
更好的精度,你需要一個任意精度數學庫,例如GMPLIB。
打印時控制點後位數/格式是比較容易的,例如參見這個問題:Set the digits after decimal point
如果您需要的是小數點是否folat後限制數字,雙重或長雙則方法是使用(setprecision)。單獨使用時,它將包含小數點前的數字,並且如果小數點後的數字小於要設置的精度,則不會在它們之後加零。解決方案是使用固定和顯示點。所以如果你想在小數點後面設置精度爲3位數,那麼在顯示或計算這些值之前寫下這一行。
cout<<fixed<<showpoint<<setprecision(3);
http://www.cplusplus.com/reference/cstdio/printf/ – clcto
使用setprecision(),但預先計算的準確性。 –
http://www.cplusplus.com/reference/iomanip/setprecision/ –