gpt4 book ai didi

java 代码产生错误的结果

转载 作者:行者123 更新时间:2023-12-01 08:07:32 25 4
gpt4 key购买 nike

我运行了我的程序,我在程序日志中看到我的一个参数是错误的,所以我尝试调试它,

我试图执行这个:

double test = ((9 + 13) * (9 + 1594) * (2157 + 13) * (2157 + 1594));

答案必须是287053602220,但它给了我-7.09206612E8

当我尝试

    double t1 = (9 + 13) * (9 + 1594);
double t2 = (2157 + 13) * (2157 + 1594);
test = t1 * t2;

它给了我一个真实的结果

原因是什么?

最佳答案

第一个方程被计算为整数,然后转换为 double 。并且您超出了 INTEGER_MAX 并进入负值。第一个等于:

//temp extends INTEGER_MAX so it gets negative.
int temp = (9 + 13) * (9 + 1594) * (2157 + 13) * (2157 + 1594));
double test = = (double) temp;

在第二个中,您先转换为 double ,以便扩展值范围,并且不会因扩展超过 INTEGER_MAX 而进入负范围。

整数值范围为 -2,147,483,648 到 2,147,483,647。如果您的数字超出范围,则从另一侧重新开始。这样你的数字就会变成负数。 Double 的范围为 4.94065645841246544e-324d 到 1.79769313486231570e+308d。通过在方程中进行转换,您可以扩展值的范围,并且您的数字不会超出范围并在负范围内重新开始。

关于java 代码产生错误的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20300492/

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