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
这样的数据类型表示金额应该足够用了,显示的时候添加一个小数点就可以

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