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

推薦する

CSS スタイルをプログラムで処理するためのサンプル コード

プログラム的アプローチの利点1. スタイルの分散を避けるためのグローバルコントロール2. シンプルな...

Ubuntu 18.04はルート権限を取得し、ルートユーザーとしてログインします

事前に書いておきます:次の手順では、ターミナルにコマンドを入力する必要があります。コンピューターでブ...

Vueのメソッドとプロパティの詳細な説明

Vueのメソッドとプロパティ1. 方法使用法 1メソッド: {メソッド名: function(){}...

VMware Workstation 仮想マシンのインストール操作方法

仮想マシンは非常に便利なテストソフトウェアです。ハードウェアに損傷を与えることなく、さまざまなテスト...

MySQL btree インデックスとハッシュ インデックスの違い

MySQL では、ほとんどのインデックス (PRIMARY KEY、UNIQUE、INDEX、FUL...

CentOS 7にChromeブラウザをインストールする方法

この記事では、CentOS 7 に Chrome ブラウザをインストールする方法を紹介します。詳細は...

JavaScript の基礎: 即時実行関数

目次関数フォーマットを即時実行関数を即座に実行する他の方法 – 式即時実行される関数はパラメータを取...

Dockerの核となる原則であるCgroupの詳細な説明

カーネル内の強力なツール cgroup は、NameSpace によって分離されたリソースを制限でき...

16 の XHTML1.0 と HTML の互換性ガイドラインの概要

1.ページを XML タイプとして宣言しないでください。ページでは UTF-8 または UTF-16...

HTML&CSS&JS 互換性ツリー (IE、Firefox、Chrome)

Web デザインにおけるツリーとは何ですか?簡単に言うと、リンクをクリックするとサブディレクトリが展...

ボタンをEnterキーに関連付けるjsコード

コードをコピーコードは次のとおりです。 <html> <ヘッド> <ス...

レスポンシブ原則のソースコード分析のVue解釈

目次初期化初期化状態()初期化プロパティ()初期化データ()観察する()オブザーバーリアクティブを定...

Reactはtodolistの追加、削除、変更、クエリを実装します

目次ToDoリストを例に挙げましょうディレクトリは次のとおりですアプリ入力.jsリスト.jsアイテム...

複数のドメイン名、ポート、IP仮想ホストに基づくNginx構成

1. タイプの導入1.1 ドメインベースの仮想ホスティングいわゆるドメイン名ベースの仮想ホストとは、...

NODE.JS を使用して WEBSERVER を作成する手順

目次Node.jsとはNodeJSをインストールするNode を使用して Hello World を...