浮点运算的问题

galewithwing 2004-10-25 11:09:27
以前记得解决了这个问题的,可是后来又发现类似问题了,郁闷!
问题是:
我做一个统计,发现计算结果不对,
float a1;
float a2;
float a3
a1=9.0;
a2=14.4;
a3=a1*a2;

a3击过居然是:129.59999
要命!
我把a3改为 double,
居然是:129.59999084472656

怎么处理好啊?
这可是不能出问题的计算啊
谢谢了
...全文
61 点赞 收藏 8
写回复
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
galewithwing 2004-10-25
a3 = (float) a1*a2;
这种方式肯定不行;结果本来就是float型的,强制转换也没用啊
即使是 float + float 结果也会出问题!
虽然说有BigDecimal可以用,我觉得麻烦啊,开销太大
各位兄台有什么好的建议么?
回复
wangnewton 2004-10-25
MARK
回复
j2nix 2004-10-25
a3 = (float) a1*a2;
回复
galewithwing 2004-10-25
嘿嘿
我就是想偷懒,不想看文档啊!
只能用java.math.BigDecimal来构造类型解决啊!
除非有第三方的包
给分
回复
j2nix 2004-10-25
楼主找找吧,前两天刚有个同类的贴子。
回复
net_jun 2004-10-25
刚刚那个函数内部还是用BigDecimal来实现的,就当我没答吧.呵呵...
回复
net_jun 2004-10-25
a3=Arith.round(a1*a2,2)
回复
denghan 2004-10-25
偶也遇到这样的问题:
1581*0.01f = 15.809999
晕哦
各位大侠有什么好的办法?
回复
发动态
发帖子
Web 开发
创建于2007-09-28

7.9w+

社区成员

Java Web 开发
申请成为版主
社区公告
暂无公告