2016-05-01 9 views
0

"float"型の列があり、6桁に丸められていることは明らかです。だから23.123456は23.1235に丸められ、12345678は12345700に丸められるSQLテーブルの列 "float"は6桁に丸めます

これをどうやって防ぐ/変更するのですか?

おかげ

+1

精度の高いデータ型を使用してください。ダブル、デシマルなど – vittore

+0

私は金融業界で何年も働いており、私の経験からはいつも "フロート"に悩まされていたと言えるでしょう。それはあなたがしていることに応じてしばしば重要な正確な数字になると便利です(他の人が既に説明した理由のために)。私は浮動小数点の多くの問題を理解して以来、私たちはどのデータベースでもそれを使用せず、すべての浮動小数点を数値に変更しました。私の助言:怠惰ではない、快適な浮動小数点の使用を避けてください。数値はもう少し時間がかかりますが、長期的には(私の意見では)本当に価値があります。 – Reboon

答えて

0

フロート(および完全を期すための実)は、おおよその値です。たとえば浮動小数点データ型をお読みくださいhere

精度の高い演算結果が必要な場合は、数値データ型または10進データ型を使用してください。上のリンクから、SQL Serverでは、デフォルトの最大精度は38です。つまり、計算を実行する際には最大38桁の正確な数字が使用されます。

+0

私は参照してください。だから私は現在、フロートの列に格納されている非常に多くのデータを持って、私は10進数に変換する必要があります。列の種類を変更するだけで問題はありますか?もちろん私の以前のデータは小数点以下の型の精度はありませんが、それは問題ありません。私はちょうど123.456の浮動小数点値が999のようなものに変わらないことを確かめたいです...私はこれをダミー列でテストしましたが、それはうまくいくようでした。列の種類を変更すると、既存のデータに問題があると思いますか? – Tortooga

+0

floatからnumeric/decimalへの切り替えはかなり予測可能です。あなたのRDBMSのキャスト/変換操作の詳細については、Googleをご覧ください。 – vittore

関連する問題