mysqlのfloat型が非常におかしいのですが、どうすれば解決できますか?

WBOY
リリース: 2016-06-13 11:58:59
オリジナル
853 人が閲覧しました

mysql の float 型は非常に奇妙です
3 つのフィールドがあるテーブル テストがあります。
uid、1、2、uid は int 型、自動インクリメント、1 つのフィールドは float (3, 2)、および2 つのフィールドは float(5,2) です。

ロジックによれば、1 つのフィールド、つまり最初の 3 桁と最後の 2 桁に 123.12 のような数値を挿入できます。
2 つのフィールドでは、最初の 5 桁と最後の 2 桁のビットを挿入できますが、テスト値 (null,123.12,12345.12) に

挿入を挿入しましたが、挿入は成功しました。データが異なります。これはなぜですか?


値 98.12 (最初の 2 桁と小数点 2 桁) を挿入する必要がある場合、このフィールドは float 型に設定する必要があります。 ?
------解決策----------------
1. MySQL の定義が間違っています。非標準構文の使用を許可します: FLOAT(M,D)、REAL(M,D)、または DOUBLE PRECISION(M,D)。ここで、「(M,D)」とは、小数点以下D桁の合計M桁の整数を表示する値を意味します。たとえば、FLOAT(7,4) として定義された列は、-999.9999 と表示される可能性があります。 MySQL は保存時に値を四捨五入するため、FLOAT(7,4) カラムに 999.00009 を挿入すると、おおよその結果は 999.0001 になります。

2. 精度要件がある場合は、
DECIMAL 型と NUMERIC 型は MySQL では同じ型とみなされます。これらは、通貨データなど、正確な精度が必要な値を保持するために使用されます。この型の列を宣言するときは、精度と位取りを指定できます (通常はそうします)。たとえば、
salary DECIMAL(5,2)
この例では、5 が精度、2 が位取りです。精度は値を保存できる桁数を示し、スケールは小数点以下の桁数を保存できます。



-----解決策---------正の数を制限する属性を設定する必要があります。

------解決策------------------

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート