如何在J2ME中查找和处理二进制/数值溢出

时间:2010-09-17 15:41:00

标签: java java-me mobile integer-overflow

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

提前感谢您的帮助

2 个答案:

答案 0 :(得分:1)

您可以检查结果是否为负数或正数(取决于largeOne和largeTwo标志),但这可能是猜测工作。


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


资源:

关于同一主题:

答案 1 :(得分:0)

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