在MySQL中,CEILING()和FLOOR()函式與ROUND()函式有何不同?


CEILING() 函式返回不小於X的最小整數。請考慮以下示例:

mysql> Select CEILING(3.46);
+---------------+
| CEILING(3.46) |
+---------------+
|             4 |
+---------------+
1 row in set (0.00 sec)  

mysql> Select CEILING(-6.43);
+----------------+
| CEILING(-6.43) |
+----------------+
|             -6 |
+----------------+
1 row in set (0.02 sec)

FLOOR() 函式返回不大於X的最大整數。請考慮以下示例:

mysql> Select FLOOR(-6.43);
+--------------+
| FLOOR(-6.43) |
+--------------+
|           -7 |
+--------------+
1 row in set (0.00 sec)
 
mysql> Select FLOOR(3.46);
+-------------+
| FLOOR(3.46) |
+-------------+
|           3 |
+-------------+
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或不是)。
  • FLOOR() 函式始終向下舍入數字(朝零的方向)。
  • CEILING() 函式始終向上舍入數字(遠離零的方向)。
mysql> Select ROUND(1.415,2),FLOOR(1.415),CEILING(1.415);
+----------------+--------------+----------------+
| ROUND(1.415,2) | FLOOR(1.415) | CEILING(1.415) |
+----------------+--------------+----------------+
|           1.42 |            1 |              2 |
+----------------+--------------+----------------+
1 row in set (0.00 sec)

更新於:2020年6月20日

6K+ 次瀏覽

開啟你的職業生涯

完成課程獲得認證

開始學習
廣告
© . All rights reserved.