我正在尝试编写一个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 - 我知道还有其他(更好的)方法可以解决这个问题,但我真的很想知道为什么这段代码会这样。