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 環境変数の設定とシリアル化の詳細な説明

推薦する

Deepin Linuxでカーネルを手動でアップグレードする方法

deepinとUbuntuどちらもdebianをベースにしたディストリビューションであり、ここではU...

CSS3はNESゲームコンソールのサンプルコードを実装します

成果を達成する実装コードhtml <input type="radio" ...

Docker実践: Pythonアプリケーションのコンテナ化

1. はじめにコンテナはサンドボックス メカニズムを使用して相互に分離します。コンテナ内にデプロイさ...

HTML テーブル タグ チュートリアル (31): セルの幅と高さの属性 WIDTH、HEIGHT

デフォルトでは、セルの幅と高さはコンテンツに応じて自動的に調整されますが、セルの幅と高さを手動で設定...

MySQL のデータ型とフィールド属性の原理と使用法の詳細な説明

この記事では、MySQL のデータ型とフィールド属性について説明します。ご参考までに、詳細は以下の通...

MySql テーブル、データベース、シャーディング、パーティショニングの知識ポイントの紹介

1. はじめにデータベース内のデータ量が一定レベルに達すると、システムパフォーマンスのボトルネックを...

Dockerコンテナの自動終了を停止する方法の詳細な説明

この記事では、Docker コンテナとフロントエンド プロセスの関係と、コンテナを永続的に実行できる...

uniapp WeChatミニプログラムのグローバル共有を実装するためのサンプルコード

目次グローバル共有コンテンツファイルを作成するファイルをインポートしてグローバルに登録するページ共有...

MySQL 8.0.2 オフラインインストールと設定方法のグラフィックチュートリアル

MySQL_8.0.2のオフラインインストール方法は参考までに。具体的な内容は以下のとおりです。次の...

JSはjQueryのappend関数を実装します

目次コードを見せてください効果をテストする効果追伸別のアプローチコードを見せてください HTMLEl...

MySQL ステートメントの概要

目次1. データベースの使用を選択2. 情報を表示する3. テーブルを作成する4. データを挿入する...

CSS で「プラス記号」効果を実装するためのサンプルコード

以下に示すプラス記号の効果を実現するには: この効果を実現するには、div 要素だけが必要です。 b...

MySQL マルチテーブルクエリの詳細な説明

よく食べて十分に休息を取るというのは簡単なことのように思えますが、実際に実行するのはそれほど簡単では...

JavaScript でグレイウルフのポットビーティングゲームを実装

1. プロジェクト文書 2. ページレイアウトにHTMLとCSSを使用するHTML部分 <di...

HTML/CSS での空白処理とページ内の空白を保持する方法

HTML の空白ルールHTML では、コンテンツ内の複数のスペースは通常 1 つとみなされ、連続する...