0

setfloat を使用して SQL Server データベースに値を入力しようとしています

jtdsproc.setFloat(12, nb.getOpenAmount());

私の金額は 1.20 ですが、データベースでは 1.199999523 と入力されています 2 桁まで入力したいのですが、このセットはフロートを作成します 問題 小数点以下 2 桁になるようにフロート値を入力する方法。

Jtds ライブラリを使用して SQL サーバーに接続しています

4

1 に答える 1

2

浮動小数点数を使用して数値 1.2 を正確に表すことはできません。これは、1.2=6/5 の分母が 2 のべき乗ではないためです。通常、そのようなことが重要な場合は、固定小数点数を格納するようにデータベース スキームを設計します。その場合、Java が正確に 1.2 に等しくない値を転送していたとしても、データベースは正確に 1.2 の値を格納します。

別の方法として、値を文字列として転送してみてください。を使用DecimalFormatして固定桁数の表現を生成し、その文字列をデータベースに転送して、データベース サーバー上の内部表現への変換を処理させることができます。これがうまく機能するかどうかは、データベース サーバーの精度が単精度浮動小数点数よりも高いかどうかによって異なります。そうでない場合、保存されている数値は以前と同じになる可能性があります。

于 2013-05-10T13:17:51.910 に答える