0

C# と SQL 2005 を使用しています。値0.2のfloat変数を実数型のテーブル列に格納しました。値を確認するためにテーブルを開いたとき、0.200000029 の値が見つかりました... これは既知の問題であり、real は近似型です。ただし、管理スタジオを使用して値を 0.2 に変更し、テーブルをリロードしました。データベースは現在、0.2 の値を示しています。

問題は C# と SQL の間のどこかにあります。C# の値を SQL 管理スタジオのように保存することはできますか? だと思いますが、方法がわかりません。

誰でも助けることができますか?どうもありがとう。

トーマス

4

2 に答える 2

3

.2 を格納し、.2 のみを取得する場合は、decimalデータ型を使用します。 floatSQL Server の値は実際の IEEEfloat値です。つまり、フィールドに NaN 値が含まれる可能性があります。これらの値で何かを行うと、ステートメントがクラッシュします。値が本当に必要であることがわかっていない限りfloat、 を使用する方がはるかに優れていますdecimal

あなたの質問に直接答えるために、あなたが見ている .200000....029 は浮動小数点値の性質です。

于 2010-01-27T15:17:49.443 に答える
0

指摘したように、あなたが見ているのは、浮動小数点数がバイナリに格納される方法の副作用です。

0.2f の場合、正確な表現は 0.20000000298023223876953125 です。

それがどのように派生したかについての詳細とコードについては、Jon Skeet の記事を参照してください。

http://www.yoda.arachsys.com/csharp/floatingpoint.html

于 2010-01-27T15:59:55.753 に答える