首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >浮点数表示,Java示例

浮点数表示,Java示例
EN

Stack Overflow用户
提问于 2013-12-09 20:00:16
回答 2查看 2.1K关注 0票数 3

你能解释一下,为什么我得到了下一个结果:

当我运行以下命令时:

代码语言:javascript
复制
System.out.println((0.2 - 0.1));

我得到: 0.1

当我运行以下命令时:

代码语言:javascript
复制
System.out.println((0.3 - 0.2));

我得到: 0.09999999999999998

我知道数字"0.1“没有二进制的有限表示,但它不能解释上面的结果。这很可能不是关于特定的语言,而是关于数字在计算机中的存储方式。

EN

回答 2

Stack Overflow用户

发布于 2013-12-09 20:10:19

Java使用IEEE floating point来表示double值。这不是一个精确的表示,并且一些计算会导致微小的误差,这些误差以这种方式表现出来。

票数 1
EN

Stack Overflow用户

发布于 2013-12-09 20:12:36

我同意上面的波西米亚(floatdouble并不精确),所以你会得到像这样的奇怪的东西

但是你的问题有一个解决方案:

代码语言:javascript
复制
NumberFormat nf = NumberFormat.getInstance();
nf.setMaximumFractionDigits(1);
nf.format(0.3f - 0.2f);

这将生成0.1

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20470114

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档