3

私はJUnitでPLSQLプロシージャをテストしており、Java/Hibernateで彼の「等しい」にしています。PLSQLの1つの結果は0ですが、Javaの結果は0.0000です。呼び出された関数を使用しようとしましstripTrailingZerosたが、機能しませんでした。実際には同じものがあると思いますが、まったくわかりません。

編集たとえば、数値的に意味のないゼロを削除したい

2.3400 > 2.34

私はそれを行うことができますstripTrailingZerosが、その関数を適用すると同じことが返されます:

0.0000 > 0.0000

4

2 に答える 2

6

あなたは正しいことをしていますが、メソッドの実装は間違っています。つまり、Java は壊れています。この問題に関するバグ レポートがありますが、まだ解決されていないようです。お客様が提出した回避策がリンクに含まれています。基本的に、正しく動作する明示的なcompareTowith を実行します。new BigDecimal("0")

于 2012-07-05T13:19:56.520 に答える
3
BigDecimal bd1 = new BigDecimal("0.0000");
System.out.println(bd1); // -> 0.0000
BigDecimal bd2 = bd1.setScale(0);
System.out.println(bd2); // -> 0
System.out.println(bd1.equals(bd2)); // -> false
System.out.println(bd1.compareTo(bd2) == 0); // -> true
于 2012-07-04T21:32:05.330 に答える