0

MathFPライブラリを使用するユニットコンバータプログラムを構築しています。通常、単位変換は次の式で行われます。

U1(ユニット1)* K(定数)= U2(ユニット2)

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などの別のプリミティブデータ型を使用する必要がありますか?

よろしくお願いします

4

2 に答える 2

1

結果が負か正か (largeOne と largeTwo の符号に応じて) を確認できますが、これは推測にすぎません。


別の方法を見つけました.2つの数値をアルゴリズムで手動で掛けることができます.


資力 :

同じトピックで:

于 2010-09-17T15:44:20.923 に答える
0

Java の int/long プリミティブよりもオーバーフロー/アンダーフローの処理がはるかに優れている BigDecimal クラスの使用に切り替えることができます。int/long 値は、クラスではない特殊なケースであり、その結果、OOP の利点が失われます。

于 2010-09-17T15:49:05.240 に答える