java float 精度问题

yu777777777 2012-12-26 02:01:48
这么解决这个float丢失精度的问题
float f = 1.1f;
f = f-0.1f;
System.out.println(f);
这个时候输出的是0.999999而不是1 这个如何让他输出1,谢谢!
...全文
366 10 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
yu777777777 2012-12-27
  • 打赏
  • 举报
回复
谢谢大家了 是我JDK版本比较低的原因 把eclipse里面preference-java-jdk compiler从5.0改到6.0就没这个问题了
安特矮油 2012-12-27
  • 打赏
  • 举报
回复
十进制数的二进制表示可能不够精确,浮点数或是双精度浮点数无法精确表示的情况并不少见。浮点数值没办法用十进制来精确表示的原因要归咎于CPU表示浮点数的方法。这样的话您就可能会牺牲一些精度,有些浮点数运算也会引入误差。
isbn888 2012-12-26
  • 打赏
  • 举报
回复
嗯,用大数据类型,精度就不会丢失
Edison徐 2012-12-26
  • 打赏
  • 举报
回复
System.out.println(new BigDecimal("1.1").subtract(new BigDecimal("0.1"))); 并不是所有的小数都可以用二进制浮点数精确表示。LS几个输出1.0的可以换成1.1-0.2试试。 在需要精确答案的地方,避免使用float 和double。 对于货币计算,要用int, long和BigDecimal
我爱淼儿 2012-12-26
  • 打赏
  • 举报
回复
我工作用的环境是 STS2.9, JDK7.0.09. 输出结果也是1.0. 同问,什么情况下会输出0.999999?
yongger520 2012-12-26
  • 打赏
  • 举报
回复
java.math.BigDecimal
Fuuqiu 2012-12-26
  • 打赏
  • 举报
回复
引用 2 楼 howlaa 的回复:
我的在eclipse j2ee版中输出是1.0
测试了下LZ的代码 结果确切的说是:1.0 不知道在什么环境下输出0.9999999?
菖蒲老先生 2012-12-26
  • 打赏
  • 举报
回复
浮点数运算用BigDecimal
呼啸 2012-12-26
  • 打赏
  • 举报
回复
我的在eclipse j2ee版中输出是1.0
rockets311 2012-12-26
  • 打赏
  • 举报
回复
了解一下java.math.BigDecimal
注意需要用它接收String参数的构造方法。

62,634

社区成员

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

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