2017-11-23 10 views
1

SQLクエリはそのことを行うと日付を保存し、成功を返します任意のfloatまたはdoubleフィールド 588966.68MySQLの保存floatエラー

にこの番号を保存してください。今、あなたは先ほど保存した同じ値を取得し、それは588966.69

を言うだろうあなたは0.68、リード上に保存されますが0.69を入手!!?!

これはどのように可能ですか?私のフィールド型はFLOAT(10,2)でもDECIMAL(12,2)とDECIMAL(12,3)でDOUBLE(12,2)を試していますが、明示的に2つの小数しか必要ありません。

私はそれがDECIMALフィールドタイプで動作することを120K

+0

どのSQL dbmsを使用していますか?バージョン? –

+0

@PieroAlbertoはAmazonでこれを気付いたAuroraもサーババージョンのテストを行った:5.7.18-log-InnoDBを使ったMySQL Community Server(GPL) – INs

+0

'FLOAT'や' DOUBLE'! –

答えて

0

FLOATは、精度が24 ビットです。数字まで 128Kは、整数部分を表すのに17ビットを必要とし、小数部分には7ビットしか残さない。

128Kから256Kの間:整数の場合は18ビット。分数のためのわずか6ビット。 6ビットで64種類の値が得られますが、小数点以下2桁には100種類の値が必要です。十分な精度はありません。

+0

それは非常に良い説明です。レッスンは今学んだ。金融ソフトウェアでFLOATを使用しないでください:) – INs

0

スクラッチ上の数字で、この出来事に気づきました!

関連する問題