首页 > 解决方案 > 为什么整数比较会给出错误的结果?

问题描述

我一直在尝试解决一个需要我编写一个名为mySqrtform的函数的问题int mySqrt(int x)

我应该计算并返回 x 的平方根,其中 x 保证为非负整数。

由于返回类型是整数,因此十进制数字被截断,只返回结果的整数部分。

我尝试实现一个简单的算法,从该算法开始i=0,然后递增i直到的值,$i*i<=x$然后返回i-1

public int mySqrt(int x) {
    int i=0;
    while(i*i<=x){
        i++;
    }
    return (i-1);
}

我知道发生了什么,但我真的不明白为什么。当 i 足够大i^2 >2^31-1时,while 循环中的比较(i*i<=x)x=2147395600小于2^31-1)给了我一个真实的结果。为什么会这样?结果,我得到了垃圾结果。i^2<=x当我尝试评估 ( ) 时,究竟发生了什么i^2不能再存储在 int 中?

标签: java

解决方案


推荐阅读