2

ユーザーがテキスト ボックスに 10 進数を入力できるプロジェクトがあります。次に、その値を取得して、null 許容の float 変数に tryparse し、それを tableAdapter に渡して DB を挿入または更新します。

.24 の値を指定すると、それが tableAdapter に渡されますが、データベースに保存されているものを見ると、0.239999994635582 に変換されます。

TableAdapter の挿入呼び出しまでデバッグしたところ、.24 の値が渡されています。SQL サーバー データベースの列の型が float です。

なぜこれが起こっているのかについて何か考えはありますか?10 進数に切り替える必要がありますか?

ありがとう

4

1 に答える 1

0

解決策は、浮動小数点数の2表現の内部累乗です。

一部の小数値はうまく表現できません。

詳細はこちら:IEEE754浮動小数点数

ここでは10進数への切り替えが機能しますが、パフォーマンスにも影響します。(フロートよりも約10倍遅いですが、おそらく気付かないでしょう)

于 2012-07-25T12:13:12.913 に答える