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アプレットがログインインターフェースを実装

推薦する

Docker-compose を使用して ELK クラスターを構築する方法

すべてのオーケストレーション ファイルと構成ファイルは、私の Github からアクセスできます。構...

uniapp プロジェクトをデスクトップ アプリケーションとしてパッケージ化する方法

Electronのインストール cnpm 電子をインストール -g electron-package...

Nginx の break と last の違いの詳細な分析

まずは違いについて話しましょう最後に、書き換えられたルールは、次の場所と一致させるために書き換えられ...

レム適応の一般的なパッケージ3つについて

序文以前、rem適応についての記事を書きましたが、具体的なパッケージは紹介しませんでした。今日は、よ...

国内SNSのホームページを比較・分析して得た経験をみんなで共有(写真)

この記事では、ソーシャル ウェブサイトのホームページを比較分析することで洞察を得て、ソーシャル ウェ...

Ubuntu 16.04 mysql5.7.17 リモートポート 3306 を開く

MySQLへのリモートアクセスを有効にするデフォルトでは、MySQL ユーザーにはリモート アクセス...

mysql5.7.18.zip インストール不要版設定チュートリアル(Windows)

これは私が以前使用した mysql5.7.18.zip のインストール チュートリアルです。まずこれ...

Docker 実行オプションを使用して Dockerfile の設定を上書きする

通常は、最初に Dockerfile ファイルを定義し、次に docker build コマンドを使...

Nginx 静的サービス設定の詳細な説明 (ルートとエイリアスの指示)

静的ファイルNginx は高いパフォーマンスで知られており、フロントエンドのリバース プロキシ サー...

Baidu の https 認証プロンプト「http サイトを 301 から https サイトにリダイレクトしてください」の解決方法の詳細な説明

最近、ウェブサイトを https アクセスに変換したいのですが、すべて完了した後、Baidu Web...

MySQL の count()、group by、order by の詳細な説明

最近、IM を実行するときに、これらの 3 つのキーワードを同時に使用したときに問題が発生しました。...

Vue で eslint 検出をオフにする方法 (複数の方法)

目次1. 問題の説明2. 問題解決1. 問題の説明Vue プロジェクトを開発する場合、作成時に誤って...

Javascript サンプル プロジェクトでの虫眼鏡効果の実装プロセス

目次序文事例: JD.com の虫眼鏡効果の模倣オフセットシリーズクライアントシリーズスクロールシリ...

Ubuntu 18.04 に mysql5.7.23 をインストールするチュートリアル

この記事では、Ubuntu18.04にmysql5.7.23をインストールする具体的な方法を参考まで...