3

float であり、動作していないエンティティのプロパティに基準を適用しています。

         Criteria crit = session.createCriteria(MyClass.class);
         float a = (float)0.2;
         crit.add(Restictions.eq("mynumber", a));

mynumber は my entity です

              @Column(name = "mynumber")
               private float  mynumber;

私のテーブルには mynumber=0.2 の行がありますが、常に空の結果が得られます

それが機能する他の列に他の基準を置いた場合、問題はこの浮動小数点型のみにあります。

解決策は何ですか

ありがとう

4

1 に答える 1

3

floating数値はIEEE Standard 754表現に従い、0.2として保存できます0.19999967..。これにより、比較が失敗し、結果が得られません。

この問題を回避するには、可能であればdoubleorを使用します。BigDecimal

于 2012-11-21T04:09:48.027 に答える