Borlad C++ 四捨五入

AnsiString s;
float a = 5.6886;

s = FormatFloat("0.00",a); //BCB 的格式函數,可實現浮點數和貨幣的格式化
s = AnsiString().sprintf("%.2f",a); //標準 C 的做法,浮點數小數點後保留2位,轉成字符串

由於浮點數在機器裏保存的格式的原因,不可能精確的表示出小數,只能保證在某個精度範圍內。
例如上面的賦值:float a = 5.6886; 實際上 a 的值可能是 5.68860006332397
只有整數和字符串是完全(絕對)精確的。

如果你想保存貨幣的值,不要用 float 和 double 保存“圓”錢,計算量大到一定程度的時候,就看到計算錯誤了。因爲金額要求的是絕對精確,建議採用 __int64 型的整數保存金額,單位爲分。

__int64 的取值範圍:-9223372036854775808 到 +9223372036854775807
這樣的數據類型表示金額應該足夠用了,顯示的時候添加一個小數點就可以

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章