3

float を MySQL データベースに格納しようとしていますが、Hibernate は列に格納されている値とは異なる値を取得します。

私のアプリでは、次のように計算します。

float subtotal = 160.5f;
float ammount = (float) (subtotal * 0.1f); // this way I get the 10%
receipt.setAmmount(ammount);
receipt.save();

その金額をログに記録すると、次のようになります。

19/04/2013 10:17:20 [INFO] ServiceImpl: Added ammount x $16.05

ammount私のmysql dbの列はFLOAT UNSIGNED、selectを実行すると値として16.05を取得しますが、後でHibernateでそのオブジェクトをフェッチすると、ammountフィールドは16.049999237060547になります。

私の hbm 列は次のようになります。

<property name="ammount" type="float"></property>

私はここここを読んでいて、代わりにまたはお金のためBigDecimalにJavaで使用することをお勧めしますが、データベースでどのデータ型を使用する必要があるか、またはそのデータ型を使用するようにHibernateを構成する方法を取得できません。ありがとう!FloatDouble

4

2 に答える 2