c# - 如何检查计算是否在整数较高和较低范围内

标签 c# casting int

我认为这将非常简单,但它导致需要比我想要的更多的检查。

到目前为止我有这个代码:

        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/

相关文章:

java - java中以int数组作为键的哈希表

python - 如何在python中将字符串列表转换为整数

java - 获取第 n 个 nextInt 值的最快方法是什么?

c# - 针对开源内存数据库测试 Oracle SQL 查询

javascript - .Net core - Ajax post不将变量传递给 Controller ​​方法

c# - 如何将 Filter 应用于 PagedCollectionView 但防止 CollectionChanged 事件在编辑时触发?

PHP:将 64 位整数转换为字符串

c# - Workflow Manager 1.0 可行吗?

java - 这两个语句之间的语义区别是什么?

c - 错误 : Assignment makes pointer from Integer without a cast. .. 在 C 程序中