gpt4 book ai didi

java - 10个问题的力量

转载 作者:行者123 更新时间:2023-12-01 06:32:02 24 4
gpt4 key购买 nike

我遇到了愚蠢的问题,以前从未见过。

我正在尝试执行一项非常简单的任务,进行一些需要 10 次方增长的数学计算。

首先,我编写了一个非常简单的增长循环,运行良好,但我不明白的是,获得的值越高,获得的结果就越不精确。

我想知道为什么会出现这种情况?以及如何修复它?

我的测试代码:

public class PowerOfTen {

private int lineCounter = 1;

public static void main(String[] args) {
PowerOfTen powerOfTen = new PowerOfTen();

powerOfTen.growingOfTenMethodOne();
powerOfTen.growingOfTenMethodTwo();
}

public void growingOfTenMethodOne() {

double MAX_VALUE = 1e50;
lineCounter = 1;

for (double i = 1; i < MAX_VALUE; i = i * 10) {
System.out.printf("%03d%1s%f\n", lineCounter, " | ", i);
lineCounter++;
}
}

public void growingOfTenMethodTwo() {

double MAX_VALUE = 50;
lineCounter = 1;

for (double i = 0; i < MAX_VALUE; i++) {
System.out.printf("%03d%1s%f\n", lineCounter, " | ", Math.pow(10, i));
lineCounter++;
}
}

}

这两种方法都有效并且应该返回正确的结果,但是这两种方法都给出了一些不准确的结果,如下面的示例所示。

方法一:第 24、26、27、28、31、32、33 行等未返回正确的结果

022 | 1000000000000000000000.000000
023 | 10000000000000000000000.000000
024 | 99999999999999990000000.000000
025 | 1000000000000000000000000.000000
026 | 9999999999999999000000000.000000
027 | 99999999999999990000000000.000000
028 | 999999999999999900000000000.000000
029 | 10000000000000000000000000000.000000
030 | 100000000000000000000000000000.000000
031 | 999999999999999900000000000000.000000
032 | 9999999999999999000000000000000.000000
033 | 99999999999999990000000000000000.000000

方法2:第 24、30 行未返回正确结果

022 | 1000000000000000000000.000000
023 | 10000000000000000000000.000000
024 | 99999999999999990000000.000000
025 | 1000000000000000000000000.000000
026 | 10000000000000000000000000.000000
027 | 100000000000000000000000000.000000
028 | 1000000000000000000000000000.000000
029 | 10000000000000000000000000000.000000
030 | 100000000000000010000000000000.000000
031 | 1000000000000000000000000000000.000000
032 | 10000000000000000000000000000000.000000
033 | 100000000000000000000000000000000.000000

最佳答案

这不是一个“愚蠢的问题”;这是计算机科学的核心问题之一……处理数字的正确表示是一项艰巨的任务。

您可能想开始阅读here例如。

任何“编程”的人都应该明白这实际上意味着什么;以及它如何影响您的应用程序/解决方案。

关于java - 10个问题的力量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31702164/

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