MySQL データ型における DECIMAL の使用法の詳細な説明

MySQL データ型における DECIMAL の使用法の詳細な説明

MySQL データ型における DECIMAL の使用法の詳細な説明

MySQL のデータ型には、INT、FLOAT、DOUBLE、CHAR、DECIMAL などがあり、それぞれに独自の機能があります。ここでは主に、MySQL のデータ型のうち DECIMAL 型の機能と使用方法を紹介します。

通常、浮動小数点列に割り当てられた値は、列に指定された小数点数に丸められます。 1. 2 3 4 5 6 を FLOAT(8, 1) 列に格納すると、結果は 1. 2 になります。同じ値が FLOAT(8, 4) 列に格納されている場合、結果は 1. 2 3 4 6 になります。

つまり、可能な限り最も正確な値を得るために、十分なビット数を持つ浮動小数点列を定義する必要があります。 1000 分の 1 の精度が必要な場合は、小数点以下 2 桁のみを持つ型を定義しないでください。

この浮動小数点値の処理は、FLOAT(4)とFLOAT(8)のパフォーマンスが変更されたMySQL 3.23で免除されました。これら 2 つの型は、現在、単精度 (4 バイト) 型と倍精度 (8 バイト) 型であり、値が指定されたとおりに格納されるという意味で真の浮動小数点型です (ハードウェアの制限のみに従います)。

DECIMAL 型は FLOAT や DECIMAL とは異なり、DECIMAL は実際には文字列として保存されます。 DECIMAL 値の最大可能範囲は DOUBLE と同じですが、その有効範囲は M と D の値によって決まります。 M が変更され、D が固定されている場合、M が増加するにつれてその値の範囲は増加します。表 2-7 の最初の 3 行がこれを示しています。 M が固定され、D が変更されると、D が増加するにつれてその値の範囲は狭くなります (ただし、精度は向上します)。表 2-7 の最後の 3 行がこれを示しています。

特定の DECIMAL 型の値の範囲は、MySQL データ型のバージョンによって異なります。 MySQL 3.23 より前のバージョンでは、DECIMAL(M, D) 列の各値は M バイトを占め、符号 (必要な場合) と小数点が M バイトに含まれます。したがって、DECIMAL(5, 2)型の列は、すべての可能な5文字の値をカバーしているため、-9.99から9 9 . 9 9の範囲の値を持つことができます。

MySQL 3.23 以降、DECIMAL 値は ANSI 仕様に従って処理されます。ANSI 仕様では、DECIMAL(M, D) は M 桁、D 小数点以下の任意の値を表現できる必要があると規定されています。

たとえば、DECIMAL(5, 2)は、-999.99から999.99までのすべての値を表現できる必要があります。また、符号と小数点も保存する必要があるため、MySQL 3.23 以降では DECIMAL 値は M + 2 バイトを占有します。 DECIMAL(5, 2)の場合、「最長」値(-999.99)には7バイトが必要です。

正の範囲の一方の端では正の符号は必要ないため、MySQL データ型ではこれを使用して、ANSI 仕様で要求される範囲を超えて値の範囲を拡張します。たとえば、DECIMAL(5, 2) の最大値は 9 9 9 9 です。9 9 は、使用可能なバイトが 7 バイトあるためです。

つまり、MySQL 3.23 以降では、DECIMAL(M, D) の範囲は、以前のバージョンの DECIMAL(M + 2, D) の範囲と同じになります。 MySQL データ型のすべてのバージョンにおいて、DECIMAL 列の D が 0 の場合、小数点は保存されません。その結果、以前は小数点を格納するために使用されていたバイトが他の数値を格納するために使用できるようになるため、列内の値の範囲が拡張されます。

ご質問がありましたら、メッセージを残すか、コミュニティに参加して話し合いましょう。お読みいただきありがとうございます。お役に立てれば幸いです。このサイトをサポートしていただき、ありがとうございます。

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

<<:  VMware Workstation のインストール Linux システム

>>:  WeChatアプレットがログインインターフェースを実装

推薦する

MySQL の遅いクエリの落とし穴

目次1. 遅いクエリ構成1-1. スロークエリを有効にする2. 遅いクエリSQLの分析を説明する3....

MySQL の制限パフォーマンス分析と最適化

1. 結論構文: 制限オフセット、行結論: 同じ行条件では、オフセット値が大きいほど、limitステ...

Vue データ内のプロパティをランダムに変更すると、ビューは更新されますか?

インタビュアー: Vue のソースコードを読んだことはありますか?応募者:あります。インタビュアー:...

Apache Flink の任意の Jar パッケージのアップロードにより、リモート コード実行の脆弱性が再発する問題が発生する (脆弱性警告)

脆弱性の説明Apache Flink は、分散ストリームおよびバッチ データ処理用のオープン ソース...

mysql+mybatisはストアドプロシージャ+トランザクション+複数同時シリアル番号取得を実装します

データベースストアドプロシージャ`generate_serial_number_by_date` が...

Dockerコンテナ監視とログ管理の実装プロセス分析

Docker の導入規模が大きくなると、コンテナを監視する必要があります。一般的に、Docker に...

WeChatアプレットを使用して天井効果を実現する方法の例

目次1. 実装2. 問題点3. より良い実装方法があるかどうか検討する要約する背景は日付のタイトルで...

システム エラー 1067 のため、MySQL 5.6 解凍バージョン サービスを開始できません

今日午後ずっと私を悩ませたバグを記録する半月前から始めましょう。それから.................

選択にスタイルを追加するための純粋な CSS (スクリプトなし) 実装

通常は ul、li を介して選択のデフォルト スタイルを変更して、実現をシミュレートします。このよう...

モバイルデバイスでのフリーズ問題に対する CSS3 ソリューション (アニメーション パフォーマンスの最適化)

1. CSS、jQuery、Canvasを使用してアニメーションを作成する1. キャンバス利点: ...

Docker で複数の MySQL コンテナを作成して実行する方法の例

1. mysql/mysql-server:latestイメージを使用してMySQLインスタンスを素...

MySQL ステートメントに一重引用符またはバックスラッシュを含む値を挿入する方法

序文この記事では主に、シングルクォートやバックスラッシュを含む値を挿入するMySQLステートメントに...

テーブルの幅を固定して、テキストによって幅が変わらないように設定

ページ内のテーブルの幅を width="600px" に設定した後も、幅が固定さ...

Xshell にショートカット コマンドを追加する方法

便利なターミナル エミュレーターである Xshell は、開発者がホスト サーバーをリモート管理する...

Videojs+swiper が Taobao の商品詳細カルーセルを実現

この記事では、Taobao商品詳細のカルーセルを実現するためのvideojs+swiperの具体的な...