小编IAm*_*der的帖子

为什么 Java 整数在接近 2^31-1 的值时会出现错误?

我正在尝试编写一个Java程序来计算整数x的平方根,而不使用像Math.pow(). 这是我尝试过的方法 -

class Solution {
    public int mySqrt(int x) {
        
        if(x==0 || x==1)
            return x;
        
        // if(x>=2147395600)
        //     return 46340;
        
        int i;
        for(i=1 ; i*i<=x ; i++) {}
        return i-1;
        
    }
}
Run Code Online (Sandbox Code Playgroud)

如果没有注释部分,如果 x 在 2147395600 <= x <= 2^31-1 范围内(这是 Java 中 int 值范围的上限),我就会开始收到错误。例如,对于输入 x=2147395600,预期输出为 46340,但实际输出为 289398。为什么会发生这种情况?提前感谢大家。

PS - 我知道还有其他(更好的)方法可以解决这个问题,但我真的很想知道为什么这段代码会这样。

java integer

0
推荐指数
1
解决办法
74
查看次数

标签 统计

integer ×1

java ×1