2

Java では float を使用して数値を格納しています。数値が異なる整数と倍精度数の両方を使用しているため、浮動小数点形式を選択しました。数値が異なる場合、大きな整数または小数点以下の桁数が異なる大きな二重数値が存在する可能性があります。しかし、これらの番号をデータベースに挿入すると、間違った番号が保存されます。例えば:

float value = 0f; value = 67522665; System.out.println(value);

印刷: 6.7522664E7 であり、67522665 ではなく 67522664 としてデータベースに格納されます。

4

3 に答える 3

7

浮動小数点数の解像度には制限があり、有効数字はおよそ 7 桁です。丸め誤差が発生しています。を使用しdoubleてより高い分解能を得るか、正確な計算を行うには を使用できますBigDecimal

推奨読書:すべてのコンピューター科学者が浮動小数点演算について知っておくべきこと

于 2013-05-03T04:41:13.763 に答える
1

double と float にはストレージの問題があります。 浮動小数点はどのように格納されますか?

「float 型と double 型は、主に科学的および工学的計算用に設計されています。これらはバイナリ浮動小数点演算を実行します。これは、広範囲にわたって正確な概算値を迅速に提供するように慎重に設計されています。ただし、正確な結果は得られないため、正確な結果が必要な場合には使用しないでください。」

フロートを使用しないでください。代わりにBigDecimalを使用してください。データベースに関する私の経験では、NUMBER 型の要素を BigDecimal として返します。JDBC を使用してフェッチすると、BigDecimal オブジェクトになります。

于 2013-05-03T04:51:08.250 に答える