MySQL の Decimal 型と Float Double の違いの詳細な紹介

黄舟
リリース: 2017-03-24 13:20:17
オリジナル
1961 人が閲覧しました

次のエディターは、MySQLのDecimal型とFloatDoubleの違いに関する記事を提供します(詳細な説明)。編集者はこれが非常に良いものだと思ったので、皆さんの参考として今から共有します。エディターに従って見てみましょう。MySQL には float や double などの標準以外のデータ型もありますが、10 進数などの標準的なデータ型もあります。

違いは、float や double などの非標準型は近似値を DB に保存するのに対し、Decimal は値を文字列の形式で保存することです。 float、double 型は浮動小数点数 (つまり 10 進数型) を格納できますが、float には、指定したデータが整数の場合、それを整数として処理するという欠点があります。このように、通貨値の入出金時には当然問題が発生します。デフォルト値は 0.00 で、実際のストレージは 0 です。同様に、通貨を入出金すると 12.00 となり、実際のストレージは 12 になります。

幸いなことに、mysql には 10 進数という 2 つのデータ型が用意されており、上記の問題を簡単に解決できます。10 進数型は、SQL92 標準で許可されている同じ型として MySQL によって実装されます。これらは、金銭関連のデータなど、正確さが重要な値を保存するために使用されます。


データ定義

float(M,S) Mは全長、Sは小数点以下の長さです。インターネット上には不正確な例がたくさんあります。Copyは次のとおりです:

mysql> create table t1(c1 float(10,2), c3decimal(10,2));
Query OK, 0 rows affected (0.02 sec)
mysql> insert into t1 values(9876543.21, 9876543.12);
Query OK, 1 row affected (0.00 sec)
mysql> select * from t1;
+----------------+-----------------+
| c1 | c3 |
+----------------+-----------------+
| 9876543.00 | 9876543.12 |
+----------------+------------------+
ログイン後にコピー

セット内の2行(0.00秒)

別の例: DECIMAL(5,2)

mysql> create table t1(id1 float(5,2) default null,id2 double(5,2) default null,id3 decimal(5,2) default null );
mysql> insert into t1 values(1.2345,1.2345,1.2345);Query OK, 1 row affected, 1 warning (0.04 sec)
mysql> show warnings;
+-------+------+------------------------------------------+
| Level | Code | Message |
+-------+------+------------------------------------------+
| Note | 1265 | Data truncated for column 'id3' at row 1 |
+-------+------+------------------------------------------+
1 row in set (0.00 sec)
ログイン後にコピー
1.2345 ---小数点 最後は2桁までなので保存可能 データは自動的に四捨五入されますが、減少報告になります

12.34 --- OK1234.5 --- 小数部分が小さいため2 桁の場合は 0 を追加する必要があるため、保存は 1234.50 になります。そのため、全体の桁数が 5 桁を超え、保存時にエラーが報告されます。

1.2 --- 小数部分を0で埋めます。 1.20に従って保存します。

デフォルト状態の比較

浮動小数点数で経度とスケールが書かれていない場合は、実際の精度の値に従って保存されます。精度とスケールがある場合は、丸められた結果が自動的に保存されます。 ; 挿入すると、システムはエラーを報告しません。固定小数点数の精度と位取りが書き込まれていない場合、データが精度と位取りの値を超える場合は、デフォルト値の 10,0 が使用されます。システムはエラーを報告します。

以上がMySQL の Decimal 型と Float Double の違いの詳細な紹介の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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