我正在构建一个使用MathFP库的单元转换器程序。 通常,单位转换发生在以下公式中:
U1(unit1)* K(常数)= U2(unit2)
我希望能够检测到int过度/下溢的时间? 如何检测何时发生并优雅地处理问题。理想情况下,我会寻找一个通用的解决方案,因为我想要处理类型为long的原语溢出:
我唯一的想法是:
int largeOne = bigNum;
int largeTwo = anotherbigNum;
//complete math operation
long l = largeOne * largeTwo;
if(l > Integer.MAX_SIZE){
System.out.println("Overflow");
//handle error
}
我是否应该为这些转换使用不同的原始数据类型,例如double?
提前感谢您的帮助
答案 0 :(得分:1)
您可以检查结果是否为负数或正数(取决于largeOne和largeTwo标志),但这可能是猜测工作。
我找到了另一种方法,你可以手动将两个数字乘以算法。
资源:
关于同一主题:
答案 1 :(得分:0)
您可以切换到使用BigDecimal类,它比Java中的int / long原语更好地处理溢出/下溢。 int / long值是一个特殊情况,不是类,因此错过了OOP的优点。