MySQL 的 TRUNCATE() 函式和 ROUND() 函式之間有什麼區別?


**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()** 函式返回四捨五入到最接近整數的 X。如果提供第二個引數 D,則該函式返回四捨五入到 D 位小數的 X。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)  

從以上定義和示例中,我們可以觀察到這兩個函式之間的以下區別 -

  • ROUND() 函式將數字向上或向下舍入,具體取決於第二個引數 D 和數字本身(D 位小數後的數字 >=5 或不 >=5)。
  • TRUNCATE() 函式將數字截斷到 D 位小數,而無需檢查 D 位小數後的數字是否 >=5。
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)

更新於: 2020年6月20日

4K+ 瀏覽量

啟動你的 職業生涯

透過完成課程獲得認證

開始學習
廣告

© . All rights reserved.