我认为这将非常简单,但它导致需要比我想要的更多的检查。
到目前为止我有这个代码:
if (funcType == "Mul")
return (val1 * val2) <= int.MaxValue && (val1 * val2) >= int.MinValue;
if (funcType == "Add")
return (val1 + val2) <= int.MaxValue && (val1 + val2) >= int.MinValue;
if (funcType == "Sub")
return (val1 - val2) <= int.MaxValue && (val1 - val2) >= int.MinValue;
if (funcType == "Div")
return (val1 / val2) <= int.MaxValue && (val1 / val2) >= int.MinValue;
我需要检查计算结果是否在 int 值类型范围内。
例如
int val1 = 1777777774;
int val2 = 477778777;
相加后的结果是-2039410745(一个有效的整数) 但这不是正确的答案(可以这么说),因此检查无法按预期工作。
我想我可以将 val1 和 val2 声明为 long 以防止出现负结果,然后进行比较。
这安全吗(我仍然担心乘法时结果会达到极限),你能想到更好的方法吗?
非常感谢, 科汉。
最佳答案
使用checked
关键字并捕获 OverflowException
.
关于c# - 如何检查计算是否在整数较高和较低范围内,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6466118/