3

我正在对浮动且不工作的实体属性应用标准。

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

mynumber 是我的实体在哪里

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

它总是给我空结果,而在我的表中有行 mynumber=0.2

如果我将任何其他标准放在它工作的任何其他列上,那么问题只出在这种浮点类型上。

任何想法可能是解决方案

谢谢

4

1 回答 1

3

floating数字遵循IEEE Standard 754表示形式,0.2可以存储为0.19999967... 这会使您的比较失败,因此没有结果。

为避免此问题,请尽可能使用double或。BigDecimal

于 2012-11-21T04:09:48.027 回答