MySQLでROUNDではなく小数値を切り捨てる方法|TRUNCATE関数の使い方
MySQLでは、TRUNCATE() 関数を使うことで、四捨五入(ROUND)ではなく小数値を切り捨てることができます。本記事では、実際にテーブルを作成し、TRUNCATE() 関数を使って小数点以下の桁を切り捨てる手順を具体例とともに解説します。
TRUNCATE()関数とは
TRUNCATE(X, D) は、数値 X を小数点以下 D 桁になるように切り捨てる関数です。ROUND() が近い値に丸めるのに対し、TRUNCATE() は単純に指定桁以降を削除するため、意図的に切り捨て処理を行いたい場合に最適です。
サンプルテーブルの作成
まずは、DECIMAL型のカラムを持つテーブルを作成しましょう。
mysql> create table DemoTable
(
Value DECIMAL(20,8)
);
Query OK, 0 rows affected (0.54 sec)レコードの挿入
次に、INSERT文を使ってテーブルにデータを挿入します。
mysql> insert into DemoTable values(23.5654433); Query OK, 1 row affected (0.14 sec) mysql> insert into DemoTable values(12.345542211); Query OK, 1 row affected, 1 warning (0.21 sec) mysql> insert into DemoTable values(12345.678543); Query OK, 1 row affected (0.22 sec)
挿入したレコードの確認
SELECT文でテーブル内の全レコードを表示してみましょう。
mysql> select *from DemoTable;
実行結果は以下の通りです。
+----------------+ | Value | +----------------+ | 23.56544330 | | 12.34554221 | | 12345.67854300 | +----------------+ 3 rows in set (0.00 sec)
TRUNCATE()で小数を切り捨てるUPDATE文
ここからが本題です。以下のクエリを実行すると、Valueカラムの値が小数点第2位で切り捨てられます。
mysql> update DemoTable set Value=truncate(Value,2); Query OK, 3 rows affected (0.20 sec) Rows matched: 3 Changed: 3 Warnings: 0
このUPDATE文では、TRUNCATE(Value, 2) によって各値の小数点第3位以降を切り捨てています。もし ROUND(Value, 2) を使った場合は「23.57」「12.35」のように四捨五入されてしまうため、結果が異なる点に注意してください。
更新後のレコードを確認
再度SELECT文を実行して、更新結果を確認しましょう。
mysql> select *from DemoTable;
実行結果は以下の通りです。
+----------------+ | Value | +----------------+ | 23.56000000 | | 12.34000000 | | 12345.67000000 | +----------------+ 3 rows in set (0.00 sec)
まとめ
MySQLで小数値を四捨五入せずに切り捨てたい場合は、TRUNCATE() 関数を使用します。SELECT文の中で使えば表示だけを切り捨てることもできますし、今回のようにUPDATE文と組み合わせればテーブル内のデータそのものを一括で切り捨て処理することも可能です。金額計算などで誤差を避けたい場面でぜひ活用してください。
-
PayPalの小数点以下の金額をMySQLデータベースに保存する方法
PayPalなどの決済システムで扱う小数点以下の金額をMySQLデータベースに保存する場合は、DECIMAL(10,2)型を使用するのが最適です。金銭に関するデータをFLOAT型やDOUBLE型で保存すると、浮動小数点演算の仕組み上、誤差が発生する可能性があります。そのため、正確な値を保持できるDECIMAL型を使うことが強く推奨されます。DECIMAL(10,2)とはDECIMAL(10,2)は、全体で最大10桁、うち小数点以下が2桁という指定です。つまり、-9,999,999,999.99〜9,999,999,999.99までの金額を丸め誤差なしで保存できます。テーブルの作成まず、DECI
-
C#で数値を最も近い偶数に丸める方法|MidpointRounding.ToEvenの使い方
C#で数値を最も近い偶数に丸めるには、MidpointRounding列挙型のToEvenを使用します。この丸め方式は「銀行家の丸め」としても知られており、丸め対象の数値がちょうど中間値(たとえば25.5など)だった場合に、単純に切り上げるのではなく、より近い偶数側へ丸められるのが特徴です。 まず、丸め対象となるdecimal型の数値を宣言して初期化します。 decimal val = 25.55M; 数値を最も近い偶数に丸めるには、decimal.Roundメソッドの第3引数にMidpointRounding.ToEvenを指定します。 decimal.Round(val, 0, Midpo