如何将数字四舍五入到最接近的 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" operatorDIV:

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                         |
+---------------------+---------------------------------------------+