情况:
我有一个读取连续数字流的系统(仅限整数)。
问题:
如何区分流中的溢出负数和非溢出负数?有没有办法找到并丢弃溢出的数字?我正在使用C#进行开发,并且无法控制流源。所以我无法更改代码或添加任何检查。
答案 0 :(得分:4)
在通用案例中无法达到您想要的效果。在int
(或任何其他内置值类型)的生成方式上没有关于long
(或任何其他内置值类型)的信息。通过常规操作或溢出获得的二进制模式没有区别。
您的选择:
BigInteger
或static int count;
private static boolean isGreaterThan(int i, int j) {
count++;
return i > j;
}
)请注意,溢出也会产生小数/正数,因此除非您了解有关如何执行计算的更多信息,否则不会过滤所有无效值。
答案 1 :(得分:0)
您可以编写防御性代码以防止溢出。
所有内置数字类型都有MinValue
和MaxValue
属性
if (number >= Int32.MinValue && number <= Int32.MaxValue)
{
// logic
}