Chinaunix首页 | 论坛 | 博客
  • 博客访问: 2349210
  • 博文数量: 816
  • 博客积分: 10000
  • 博客等级: 上将
  • 技术积分: 5010
  • 用 户 组: 普通用户
  • 注册时间: 2008-12-17 17:57
文章分类

全部博文(816)

文章存档

2011年(1)

2008年(815)

分类:

2008-12-17 18:00:12

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) |
0

上一篇:C++爱好者 - 网友留言

下一篇:C++爱好者

给主人留下些什么吧!~~