「35444650.00」をフロートとして MySQL に入力すると、35444648.00 に再フォーマットされ続けます。
5 に答える
float には特定のレベルの精度しかありません。float データ型の精度を超えている可能性があります。代わりに DOUBLE を使用してみてください。
FLOAT, REAL, and DOUBLE PRECISION
MySQL のマニュアルでは、 fields は値を近似として保存し、INTEGER, SMALLINT, DECIMAL, and NUMERIC
fields は値を exact として保存すると主張しています。
この精度の問題を克服する最善の策は、10 進数を使用することだと思います。
参照: http://dev.mysql.com/doc/refman/5.1/en/numeric-types.html
float の精度は 6 桁です。double を使用して 15 を取得するか、numeric(x,y) に切り替えます。興味がある場合は、さまざまなデータ型のMySQL のストレージ要件を確認してください。
float のより精度の高い代替手段は ですDOUBLE
。DECIMAL
しかし、例を見ると、0 の後に必要な桁数が少なく (2 ~ 4 程度)、10 進数の前の桁数も少ない (10 ~ 12 程度) 場合、データ型が役立つ可能性があると思います。
可能な精度のレベルを超えています。float をより正確に定義する必要があります。つまり、"FLOAT(10,5)" は、小数点以下 5 桁までの合計 10 桁の float を意味します。