gpt4 book ai didi

java - 在 Java 中除以整数会产生错误的值 2147483

转载 作者:行者123 更新时间:2023-12-02 11:08:03 31 4
gpt4 key购买 nike

这是我调用的方法,用于计算 1000 个整数的平均值:

public void setMeanSampleSize(ResultData[] R) {

double temp = 0;
for(int i = 0;i < R.length;i++){

temp = temp + R[i].getTotal();
}
MeanSampleSize = (int) temp/R.length;
}

作为 ResultData 对象一部分的变量 Total 是一个整数。

在 99.99% 的情况下,此方法可以正常工作,但在某些奇怪的情况下,代码会为 MeanSampleSize 生成错误的结果 2147483(这与 32 位整数最大值 2,147,483,647 非常相似)。

任何人都可以帮助理解为什么这个除法有时会起作用,而在其他情况下会给出完全错误的结果 2147483 ?

提前致谢!

最佳答案

您正在以double的方式累积总和,然后执行以下操作:

MeanSampleSize = (int) temp/R.length;

这是

MeanSampleSize = ((int) temp)/R.length;

正如Radiodef所说,如果temp的值大于Integer.MAX_VALUE(int)temp将是Integer .MAX_VALUE (2147483647),除以 1000(整数除法)时为 ... 2147483。

您可能想先除以 double ,然后截断为 int:

MeanSampleSize = (int) (temp / R.length);
<小时/>

值得注意的是,尽管如此,使用 double 执行此操作可能不是最好的选择,除非 getTotal 返回一个 double并且您希望这些小数值累积。但可能值得使用 long (并按上述方式调整括号)。

关于java - 在 Java 中除以整数会产生错误的值 2147483,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50786356/

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