如何将数字四舍五入到最接近的 10?
How can I round a number down to the nearest 10?
在 MySQL 中,我想将数字四舍五入到最接近的十位。
例如812 -> 810,还有 819 -> 810
使用 ROUND 函数不起作用。
我会除以 10,执行 floor(),然后乘以 10 以获得正确的 int 值。所以在 MySQL 中是这样的:
SELECT FLOOR(Myattribute / 10) * 10;
您可以按如下方式使用 TRUNCATE 函数:
SELECT TRUNCATE(819, -1);
SELECT TRUNCATE(812, -1);
Result:
810
您仍然可以使用舍入函数,但将小数位指定为负数:
SELECT ROUND(812, -1)
您可以使用"integer division" operator、DIV
:
SELECT 812 DIV 10 * 10;
虽然 TRUNCATE()
似乎是 "rounding" 到 10、100 等的更好选择,但 DIV
也可以用于 "rounding" 到其他值,例如,分钟:
SELECT NOW(), FROM_UNIXTIME(UNIX_TIMESTAMP() DIV 60 * 60);
+---------------------+---------------------------------------------+
| NOW() | FROM_UNIXTIME(UNIX_TIMESTAMP() DIV 60 * 60) |
+---------------------+---------------------------------------------+
| 2020-03-17 13:51:35 | 2020-03-17 13:51:00 |
+---------------------+---------------------------------------------+
在 MySQL 中,我想将数字四舍五入到最接近的十位。
例如812 -> 810,还有 819 -> 810
使用 ROUND 函数不起作用。
我会除以 10,执行 floor(),然后乘以 10 以获得正确的 int 值。所以在 MySQL 中是这样的:
SELECT FLOOR(Myattribute / 10) * 10;
您可以按如下方式使用 TRUNCATE 函数:
SELECT TRUNCATE(819, -1);
SELECT TRUNCATE(812, -1);
Result:
810
您仍然可以使用舍入函数,但将小数位指定为负数:
SELECT ROUND(812, -1)
您可以使用"integer division" operator、DIV
:
SELECT 812 DIV 10 * 10;
虽然 TRUNCATE()
似乎是 "rounding" 到 10、100 等的更好选择,但 DIV
也可以用于 "rounding" 到其他值,例如,分钟:
SELECT NOW(), FROM_UNIXTIME(UNIX_TIMESTAMP() DIV 60 * 60);
+---------------------+---------------------------------------------+
| NOW() | FROM_UNIXTIME(UNIX_TIMESTAMP() DIV 60 * 60) |
+---------------------+---------------------------------------------+
| 2020-03-17 13:51:35 | 2020-03-17 13:51:00 |
+---------------------+---------------------------------------------+