MySQL
 Computer >> コンピューター >  >> プログラミング >> MySQL

MySQLで長い小数を扱うには?DECIMAL(21,20)の使い方を解説

MySQLで小数点以下の桁数が多い数値(長い小数)を正確に保存したい場合は、DECIMAL(21,20)を使用します。DECIMAL型は固定小数点型であり、FLOATやDOUBLEと異なり丸め誤差が発生しないため、高精度な数値の保存に最適です。

DECIMAL(21,20)とは

DECIMAL(21,20)は「全体で21桁、うち小数点以下が20桁」という意味です。そのため整数部分は1桁しか表現できません。より多くの整数桁が必要な場合は、DECIMAL(25,20)のように定義を調整しましょう。

テーブルの作成

まず、以下のようにテーブルを作成します。

mysql> create table DemoTable1493
    -> (
    -> LongValue DECIMAL(21,20)
    -> );
Query OK, 0 rows affected (0.48 sec)

レコードの挿入

続いて、INSERTコマンドを使ってサンプルデータを挿入します。

mysql> insert into DemoTable1493 values(1.0047464644664677373);
Query OK, 1 row affected (0.10 sec)
mysql> insert into DemoTable1493 values(5.999999484757773);
Query OK, 1 row affected (0.10 sec)
mysql> insert into DemoTable1493 values(0.009994995885885);
Query OK, 1 row affected (0.21 sec)

レコードの確認

SELECT文を実行して、テーブル内のすべてのレコードを表示します。

mysql> select * from DemoTable1493;

実行結果は以下の通りです。小数点以下20桁まで正確に保存されていることが確認できます。

+------------------------+
| LongValue              |
+------------------------+
| 1.00474646446646773730 |
| 5.99999948475777300000 |
| 0.00999499588588500000 |
+------------------------+
3 rows in set (0.00 sec)

まとめ

長い小数を扱う場合はDECIMAL型を選択しましょう。FLOATやDOUBLEは浮動小数点型のため誤差が生じる可能性がありますが、DECIMALなら指定した桁数の値を誤差なく正確に保持できます。精度が重要なデータには必ずDECIMAL型を使用することをおすすめします。

  1. 血液型を保存するにはどのMySQLデータ型を使うべき?varcharとENUMの使い分けを解説

    血液型を保存するためのMySQLデータ型血液型(BloodType)を保存する場合は、varchar(3) または ENUM 型を使用するのが適しています。血液型は「A+」「A-」「B+」「B-」「AB+」「AB-」「O+」「O-」のように最大3文字で表現できるため、varchar(3)で十分に対応できます。まず、テーブルを作成してみましょう。mysql> create table DemoTable1855 ( BloodType varchar(3) );Query OK, 0 rows affected (0.00 sec)次に、insertコマンドを使ってテーブ

  2. C言語でlong型が必要な理由とは?整数型のサイズとアーキテクチャの関係を解説

    C言語やC++には、整数値を扱うためにshort、int、long、long longという4つの異なるデータ型が用意されています。それぞれが占めるメモリ領域のサイズは異なり、その大きさはCPUのアーキテクチャやオペレーティングシステムによって変化します。例えば、int型は環境によって4バイトの場合もあれば、2バイトの場合もあります。これはコンパイラの違いによっても生じるため、クロスコンパイラを使用する場面では特に注意が必要です。クロスコンパイラとはクロスコンパイラとは、現在実行中のプラットフォームとは別のプラットフォーム向けにコードをコンパイルできるコンパイラのことです。つまり、同じソースコ