What would be effect of negative value of second argument, which specifies the number of decimal places, on the output of MySQL ROUND() function?

MySQLMySQLi Database

MySQL Database Training for Beginners

39 Lectures 5.5 hours

Python programming with MySQL database: from Scratch

152 Lectures 16 hours

Learn MySQL from scratch for Data Science and Analytics

87 Lectures 5.5 hours

If we specify the negative value of the second argument then the digits before the decimal point would be deleted and rounded off. The number of digits to be deleted depends upon the value of the negative second argument. Following examples will demonstrate the change, depending upon the negative value of the second argument, in the output of ROUND() function.

mysql> Select ROUND(1789.456,-1);
+--------------------+
| ROUND(1789.456,-1) |
+--------------------+
|               1790 |
+--------------------+
1 row in set (0.00 sec)  

The query above returns 1790 because the first digit (which is to be deleted because of value -1) before the decimal point is 9 (which is > 5) hence the digit before this i.e. 8 would be rounded off to 9.

mysql> Select ROUND(1789.456,-2);
+--------------------+
| ROUND(1789.456,-2) |
+--------------------+
|               1800 |
+--------------------+
1 row in set (0.00 sec)  

The query above returns 1800 because the second digit (which is to be deleted because of value -2) before the decimal point is 8 (which is > 5) hence the digit before this i.e. 7 would be rounded off to 8.

mysql> Select ROUND(1789.456,-3);
+--------------------+
| ROUND(1789.456,-3) |
+--------------------+
|               2000 |
+--------------------+
1 row in set (0.00 sec)  

The query above returns 2000 because the third digit (which is to be deleted because of value -3) before the decimal point is 7 (which is > 5) hence the digit before this i.e. 1 would be rounded off to 2.

mysql> Select ROUND(1789.456,-4);
+--------------------+
| ROUND(1789.456,-4) |
+--------------------+
|                  0 |
+--------------------+
1 row in set (0.00 sec)  

The query above returns 0 because a total number of digits before the decimal point is 4 and the value of the second argument is -4.

Updated on 10-Feb-2020 10:37:50