💰

MySQLのDECIMAL(10, 2)で19.989を挿入したらどうなるか?実験してみた

2024/09/19に公開

MySQLで数値を扱う際、DECIMAL 型は非常に便利ですが、小数点以下の桁数が制限されるため、データがどのように処理されるか気になることがあります。特に、DECIMAL(10, 2)のように定義されたカラムに3桁以上の小数を挿入した場合、どうなるかを実験しました。

実験内容

今回の実験では、DECIMAL(10, 2) 型のカラムに 19.989 を挿入し、その結果がどうなるかを確認します。以下は実験の手順です。

  1. テーブルの作成

まず、DECIMAL(10, 2)price カラムを定義したシンプルなテーブルを作成します。

CREATE TABLE products (
    id INT AUTO_INCREMENT PRIMARY KEY,
    price DECIMAL(10, 2)
);
  1. 19.989 を挿入

次に、price カラムに 19.989 を挿入して、データがどのように保存されるか確認します。

INSERT INTO products (price) VALUES (19.989);
  1. 結果の確認

挿入後、データを取得して結果を確認します。

SELECT * FROM products;

実験結果

DECIMAL(10, 2) は小数点以下2桁までしか保存できないため、19.989 は 四捨五入 されて 19.99 として保存されました。DECIMAL 型では常に指定した小数点以下の桁数に基づいて値が丸められるため、意図しないデータが保存されないように注意が必要です。

まとめ

この実験から、DECIMAL(10, 2) 型のカラムに3桁以上の小数を挿入すると、自動的に四捨五入されることが確認できました。金額などの正確な数値を扱う場合、適切な桁数を定義することでデータの正確性を保つことが重要です。

MySQLで数値を扱う際のデータ型の選び方に関するさらなる検討が必要です。

Discussion