浮点运算的问题

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

怎么处理好啊?
这可是不能出问题的计算啊
谢谢了
...全文
85 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
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
晕哦
各位大侠有什么好的办法?

81,092

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧