无法获取Math.Abs的值(-2147483648)



这是我的代码。

string strTemp = "";
for (int i = input1; i <= input2; i++)
{
    strTemp = Math.Abs(i).ToString();
    //other stuff here
}

当input1的值为-2147483648时,我得到错误

为2补码数的最小值是无效的。

我有点得到的是,这是由于溢出异常。但我该如何克服呢?

+2147483648大于int的最大值231 - 1
相反,你可以使用long;其最大值为263 - 1。

如果这还不够;使用BigInteger

@SLaks said

+2147483648大于整型

的最大值。

你可以使用Int32.MaxValueInt32.MinValue:

来检查。
x = -2147483648
if(Int32.MaxValue <= x || Int32.MinValue >= x) {
    return x;
}

最新更新