有沒有辦法將浮點數舍入到2點?例如:3576.7675745342556
變成3576.76
。限制浮點精度?
限制浮點精度?
回答
round(x * 100)/100.0
如果你必須讓事情變得漂浮:
roundf(x * 100)/100.0
柔性版使用標準庫函數:
double GetFloatPrecision(double value, double precision)
{
return (floor((value * pow(10, precision) + 0.5))/pow(10, precision));
}
請注意,因爲二進制浮點不能完全表示大多數小數值,所以當您開始仔細檢查較低位時,此答案將不起作用。但是,然後再也沒有任何其他答案。 – 2013-05-18 01:28:48
乘以100,輪整數(反正你想要的),除以請注意,由於1/100不能精確表示爲浮點數,因此請考慮保留固定精度整數。
小數定點整數很可能是這裏真正的答案。 – caf 2010-08-02 02:20:27
yourFloatNumber= Float.Round(yourFloatNumber,2); // In C#
這在Java中有效。如果仔細觀察,海報用c/C++標記了它。 – carlsborg 2010-08-01 21:55:37
如果您要打印出來,請改用可用的打印格式化功能。
在C++
cout << setprecision(2) << f;
四捨五入渲染到GUI,使用std :: ostringstream
不要使用浮動。如果要打印美元,請使用存儲美分數的整數並在最後2個地方打印小數點。花花公子幾乎總是錯誤的爲錢,除非你做簡單的計算(如天真的經濟數學模型),其中只有數量的大小真正重要,你永遠不會減去附近的數字。
嘗試使用
std::cout<<std::setprecision(2)<<std::cout<<x;
應該作品,只有2浮點數字後出現。
對於那些你使用Google,好像我是格式化浮動錢:
#include <iomanip>
#include <sstream>
#include <string>
std::string money_format (float val)
{
std::ostringstream oss;
oss << std::fixed << std::setfill ('0') << std::setprecision (2) << val;
return oss.str();
}
// 12.3456 --> "12.35"
// 1.2 --> "1.20"
你必須返回作爲一個字符串。把它放回浮標將失去精度。
試試這個,它工作在它完美
float=3576.7675745342556;
printf("%.2f",float);
改變一些對象來參觀和學習的代碼。
- 1. Unity3d浮點精度限制
- 2. 限制JavaScript中的浮點數精度
- 3. 浮點精度
- 4. 與浮點精度
- 5. C++浮點精度
- 6. C#浮點精度
- 7. haskell浮點精度
- 8. XMLSerialization浮點精度
- 9. 雙精度浮點數和其他浮點數精度
- 10. 雙精度和單精度浮點數?
- 11. 一些浮點精度和數值限制問題
- 12. SQL浮點精度限制爲6位數
- 13. 控制浮點數的精度在MATLAB
- 14. 在Python中控制浮點精度
- 15. 十進制到半精度浮點數
- 16. 浮點限制
- 17. python中的浮點精度
- 18. 管理浮點精度
- 19. 爪哇 - 雙精度浮點
- 20. 力竭浮點精度
- 21. 浮點精度格式
- 22. 浮點運算的精度
- 23. MongoDB浮點值精度?
- 24. 增加浮點數精度
- 25. SQL設置浮點精度
- 26. IEEE 754和浮點精度
- 27. 本徵浮點精度
- 28. 更改浮點型精度
- 29. Sprintf精度限制
- 30. 是否有可能以保真度將浮點雙精度浮點雙精度到兩個十進制整數?
你的意思是顯示或計算? – 2010-08-01 21:30:53
3576.7675745342556變成3576.77,不是嗎? – Vladimir 2010-08-01 21:43:36
@弗拉基米爾:不要緊張。舍入是一個模糊的術語,它包含了幾個不同的操作,它們具有更精確的含義。向上/向下舍入/朝向零/朝向無窮遠/朝向最接近的整數等 – 2010-08-01 21:51:38