gpt4 book ai didi

java - Java 上 0.1 到 2 的奇怪循环

转载 作者:行者123 更新时间:2023-12-01 19:18:47 26 4
gpt4 key购买 nike

我尝试从 0.1 循环到 2.0,然后将输出打印到控制台。但是我得到了如下奇怪的输出:

0.10.20.300000000000000040.40.50.60.70.79999999999999990.89999999999999990.99999999999999991.09999999999999991.21.31.40000000000000011.50000000000000021.60000000000000031.70000000000000041.80000000000000051.90000000000000062.0000000000000004

Source code:

public class test {
public static void main(String[] a) {
double i = 0.1;
while (i < 2.1)
System.out.println(i);
i+=0.1;
}
}
}

为什么它不打印确切的数字,而是打印像 0.79999999999 这样的点?另外,使用 for 而不是 while 有什么区别,因为我不知道如何使 0.1 增量?

最佳答案

这是正常的。它是浮点所固有的;像 0.3 这样的数字无法以二进制形式存储为精确值,因此错误会慢慢累积。引用文献:Python manual , Wikipedia , Technical explanation from Princeton CS .

关于java - Java 上 0.1 到 2 的奇怪循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5400565/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com