我认为这将非常容易,但它导致需要比我想要的更多支票。
到目前为止我有这个代码:
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 (一个有效的int) 但这不是正确的答案(可以这么说),因此检查无法正常工作。
我想我可以声明val1和val2为长,以防止负面结果然后进行比较。
这是否安全(我仍然担心在进行乘法时结果达到极限),你能想到更好的方法吗?
非常感谢, 钢钣。