0

我正在构建一个使用 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
}

我是否应该为这些转换使用不同的原始数据类型,例如双精度?

在此先感谢您的帮助

4

2 回答 2

1

您可以检查结果是负数还是正数(取决于 largeOne 和 largeTwo 符号),但这只是猜测。


我找到了另一种方法,您可以手动将两个数字与算法相乘。


资源 :

在同一主题上:

于 2010-09-17T15:44:20.923 回答
0

您可以切换到使用 BigDecimal 类,它比 Java 中的 int/long 原语对溢出/下溢有更好的处理。int/long 值是一种特殊情况,它不是类,因此错过了 OOP 的优势。

于 2010-09-17T15:49:05.240 回答