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
这样的数据类型表示金额应该足够用了,显示的时候添加一个小数点就可以了。
--------------------next---------------------
阅读(1681) | 评论(0) | 转发(0) |