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

MySQLのTRUNCATE()関数とROUND()関数の違いとは?切り捨てと四捨五入のポイントを解説

TRUNCATE()関数の基本的な動作

TRUNCATE()関数は、数値Xを小数点以下D桁で切り捨てた値を返します。Dが0の場合は小数点以下が削除され、Dが負の値の場合は整数部分の下位D桁が切り捨てられます。以下の例をご覧ください。

mysql> Select TRUNCATE(7.536432,2);
+----------------------+
| TRUNCATE(7.536432,2) |
+----------------------+
|                 7.53 |
+----------------------+
1 row in set (0.00 sec)

ROUND()関数の基本的な動作

ROUND()関数は、数値Xを最も近い整数に四捨五入した値を返します。第2引数Dを指定すると、小数点以下D桁に四捨五入された値を返します。Dは正の値である必要があり、そうでない場合は小数点以下のすべての桁が削除されます。以下の例をご覧ください。

mysql> SELECT ROUND(5.693893);
+---------------------------------------------------------+
|                    ROUND(5.693893)                      |
+---------------------------------------------------------+
|                           6                             |
+---------------------------------------------------------+
1 row in set (0.00 sec)

mysql> SELECT ROUND(5.693893,2);
+---------------------------------------------------------+
|                  ROUND(5.693893,2)                      |
+---------------------------------------------------------+
|                          5.69                           |
+---------------------------------------------------------+
1 row in set (0.00 sec)

TRUNCATE()とROUND()の重要な違い

上記の定義と実行例から、2つの関数には以下の重要な違いがあることがわかります。

  • ROUND()関数は、第2引数Dと数値そのもの(D桁目の次の数字が5以上かどうか)に基づいて、数値を切り上げまたは切り下げします。
  • TRUNCATE()関数は、D桁目の次の数字が5以上かどうかを確認せずに、単純に小数点以下D桁まで数値を切り捨てます。

実際に同じ数値に対して両方の関数を実行すると、その違いが明確に現れます。

mysql> Select ROUND(1.289,2)AS 'AFTER ROUND',TRUNCATE(1.289,2)AS 'AFTER TRUNCATE';
+-------------+----------------+
| AFTER ROUND | AFTER TRUNCATE |
+-------------+----------------+
|        1.29 |           1.28 |
+-------------+----------------+
1 row in set (0.00 sec)

この例では、1.289を小数点以下2桁で処理しています。ROUND()関数は3桁目の「9」が5以上のため繰り上げて1.29を返しますが、TRUNCATE()関数は単純に切り捨てて1.28を返します。金額計算など丸め方法が結果に影響する場面では、用途に応じて適切な関数を選択することが重要です。

  1. MySQLのTINYINT(1)とブール型(BOOLEAN)の違いとは?

    結論から言うと、TINYINT(1)とブール型(BOOLEAN)の間に違いはありません。MySQLでは、BOOLまたはBOOLEANというキーワードは内部的にTINYINT(1)へと変換されます。つまり、BOOLやBOOLEANはTINYINT(1)の別名(シノニム)として扱われるのです。それでは、実際にテーブルを作成して確認してみましょう。BOOLEAN型でテーブルを作成するmysql> create table DemoTable ( isMarried Boolean ); Query OK, 0 rows affected (1.77 sec)次に、作成したテーブルの構造

  2. MySQLにおける「!=NULL」と「IS NOT NULL」の違いとは?

    MySQLでは、値を!=NULLと比較すると、結果は必ずNULLになります。つまり、!=NULLという比較は意味を持ちません。NULLは「不明な値」を表すため、通常の比較演算子では判定できないのです。NULL値を判定するには、専用の演算子であるIS NOT NULLを使用します。ここでは、!=NULLとIS NOT NULLの違いを実際に確認するために、まずテーブルを作成します。テーブルの作成まず、次のコマンドでテーブルを作成します。mysql> create table DemoTable1970     (