MySQL における Decimal 型と Float Double 型の違い (詳細説明)

MySQL における Decimal 型と Float Double 型の違い (詳細説明)

MySQL には、10 進数などの標準データ型だけでなく、float や double などの非標準データ型もあります。

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

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

データ定義

float(M,S) Mは合計の長さ、Sは小数点以下の長さです。インターネット上には不正確な例が多数ありますが、次のようにコピーします。

mysql> テーブル t1(c1 float(10,2), c3 小数点以下(10,2)) を作成します。

クエリは正常、影響を受けた行は 0 行 (0.02 秒)

mysql> t1 に値 (9876543.21, 9876543.12) を挿入します。

クエリは正常、1 行が影響を受けました (0.00 秒)

mysql> t1 から * を選択します。

+----------------+-----------------+

| c1 | c3 |

+----------------+-----------------+

| 9876543.00 | 9876543.12 |

+----------------+------------------+

セット内の 2 行 (0.00 秒)

別の例: DECIMAL(5,2)

mysql>テーブル t1(id1 float(5,2) デフォルト null、id2 double(5,2) デフォルト null、
id3 10進数(5,2) デフォルトはnull);

mysql> t1 に値 (1.2345,1.2345,1.2345) を挿入します。
クエリは正常、1 行が影響を受け、1 つの警告 (0.04 秒)

mysql> 警告を表示します。
+-------+------+------------------------------------------+
| レベル | コード | メッセージ |
+-------+------+------------------------------------------+
| 注意 | 1265 |行 1 の列 'id3' のデータが切り捨てられました|
+-------+------+------------------------------------------+
セット内の 1 行 (0.00 秒)

1.2345 --- 小数点以下は最大2桁なので保存可能で、データは自動的に切り捨てられるが、減少が報告される

12.34 --- 了解

1234.5 --- 小数点部分が 2 桁未満なので、0 を埋め込む必要があります。したがって、1234.50 として保存する必要があります。そのため、合計桁数が 5 を超え、保存時にエラーが報告されます。

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

デフォルト状態の比較

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

MySQLのDecimal型とFloat Doubleの違い(詳細説明)に関する上記の記事は、編集者があなたと共有するすべての内容です。参考になれば幸いです。また、123WORDPRESS.COMを応援していただければ幸いです。

以下もご興味があるかもしれません:
  • MySQL における 10 進数型の使用法の簡単な紹介
  • MySQL データ型 DECIMAL(N,M) における N と M の意味の詳細な説明
  • 科学的記数法の数値文字列を 10 進数型に変換する方法
  • データベースのデータ型 float から C# の型 10 進数への変換、float データ型の変換は無効です
  • MySQL データ型における DECIMAL の使用法の詳細な説明
  • mysql 10進データ型変換の実装
  • MySQL の 10 進数データ型の小数点埋め込み問題の詳細な説明
  • MySQL データ型 DECIMAL の使用方法の詳細な説明
  • データベースにおける Decimal 型の使用と実装の詳細な説明

<<:  Tencent Cloud Server Centosにデータディスクをマウントする方法

>>:  Nest.js 環境変数の設定とシリアル化の詳細な説明

推薦する

CSS3 マウスホバー遷移ズーム効果

以下は、純粋な CSS で記述された画像マウスホバーズーム効果です。実際、基本原理は非常に単純です。...

HTML で入力テキスト入力キャッシュのクリアを禁止する 2 つの方法

ほとんどのブラウザはデフォルトで入力値をキャッシュし、ctl+F5 を使用して強制的に更新することに...

MySQL スケジュール バックアップ ソリューション (Linux crontab を使用)

序文この世の愛には値段のつくものもありますが、データには値段のつけられないものがあります。将来、誤っ...

タイプファイルの入力ボタン機能の研究

<br />一部のWebサイトでアップロードする場合、「参照」ボタンをクリックすると[フ...

クロスブラウザローカルストレージⅠ

原文: http://www.planabc.net/2008/08/05/userdata_beh...

Vueフォームで画像を処理する方法

質問: Vue にブログ投稿をアップロードするためのフォームがあり、タイトル、本文、説明、スニペット...

MySQL マルチバージョン同時実行制御 MVCC の詳細な研究

MVCC MVCC (Multi-Version Concurrency Control) は、マル...

Nginx 経由で Tomcat9 クラスターを構築し、セッション共有を実現する

Nginx を使用して Tomcat9 クラスターを構築し、Redis を使用してセッション共有を実...

VMware のインストールと使用時の問題と解決策

仮想マシンは使用中であるか、接続できません次のようなエラーが報告された場合解決まずこのページにアクセ...

mysql8.0.19 でパスワードを忘れた場合の完璧な解決策

おすすめの読み物: MySQL 8.0.19 は、間違ったパスワードを 3 回入力するとアカウント ...

SQL 結合クエリの内部結合、外部結合、クロス結合の違いの詳細な説明

データベースを使用するアプリケーションを開発する場合、必然的にユニオンクエリを使用する必要があります...

MySQL 制約の超詳細な説明

目次MySQL 制約操作1. 非ヌル制約2. ユニーク制約3. 主キー制約4. 外部キー制約5. カ...

知らないかもしれない奇妙で興味深いDockerコマンド

はじめに使えるかもしれないが、あまり使われていない、シンプルで実用的なDockerコマンドをいくつか...

Nginx タイムアウト設定の詳細な説明

最近、プロジェクトで nginx を使用し、バックエンドで Java を使用しました。バックエンドで...

1 つ以上の Linux インスタンスから SSH キー ペアのバインドを解除します。

キーペアの分離1 つ以上の Linux インスタンスから SSH キー ペアのバインドを解除します。...