質問

レガシーASPアプリケーションに取り組んでいます。浮動小数点型であるSQL Server 2000のフィールドに値(40.33)を挿入しようとしています。アプリケーションで(ログを介して)表示されるすべての場所が、ストアドプロシージャに40.33を送信しています。呼び出し中にデータベースに対してSQLプロファイラーを実行すると、トレースに表示される値は4.033000183105469e + 001

です。

(183105469)からの余分なゴミはすべてどこにありますか?

40または40.25を渡すと、余分なものがないのはなぜですか?

これは、floatを使用することによる奇妙な副作用の1つにすぎませんか?私が何かを書いているとき、私は通常お金か小数か何かを使います。そのため、floatデータ型に慣れていません。

役に立ちましたか?

解決

はい、これは奇妙ですが、よく知られています、使用の副作用フロート。

Microsoft SQL Serverでは、 NUMERIC、10進数 MONEYまたはSMALLMONEY スケール付きの正確な数値が必要な場合。

FLOATは使用しないでください。

他のヒント

これはおそらく単なる精度の問題だと思います-数値の0.33の部分を正確にバイナリで表現することはできません-これはおそらく最も近いものです。

問題は、フロートが100%正確ではないことです。数値を正確にする必要がある場合(特に金額を扱う場合)... Decimalタイプを使用する必要があります。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top