質問: -3.34 が -3.3399999999999999 で表示される sqlserver2005でfloat型の項目に-3.34 を手入力(クエリアナライザでinsert文で入力した時も同様)して、コマンドプロンプトから以下のselect文を実行した所、-3.3399999999999999 で表示されました。 sqlcmd -u ユーザ名 -p パスワード -d データベース名 1> select * from テーブル名 クエリアナライザで同様に select * from テーブル名 した場合は、-3.34 のまま正しく表示されます。 -12.34、-22.34などの数値ではこの事象は発生せず、何か条件があるようです。お分かりになる方がいらっしゃいましたら、ご教示いただけないでしょうか?
回答: 実機確認してみましたが、表示結果の違いは、クライアントソフト(コマンドプロンプトやアナライザ)の仕様差ですね。 数値表現の限界に関しては、#1さんの回答の通りで、浮動小数点では小数以下何桁まで精度を維持して欲しい場合には使用すべきではなく、decimal型などを使用すべきです。 今回の表示結果の差は、クライアントソフト自身あるいは、その開発言語の仕様差で、丸め等が行われた結果です。 decimal型などを使用し、小数点以下の精度も保証する定義(ただし、トータル桁数が15桁などの制限あり)にすれば、今回のような問題は発生しません。