在MySQL中,我希望能将数字向下舍入到最接近的十位数。
例如:812 -> 810,同时819 -> 810
使用ROUND函数无法实现此功能。
例如:812 -> 810,同时819 -> 810
使用ROUND函数无法实现此功能。
我会先除以10,然后使用floor()函数向下取整,再乘以10得到正确的整数值。在MySQL中可以这样实现:
SELECT FLOOR(Myattribute / 10) * 10;
SELECT TRUNCATE(819, -1);
SELECT TRUNCATE(812, -1);
Result:
810
您仍然可以使用round函数,但需要将小数位指定为负数:
SELECT ROUND(812, -1)
在PHP中,我想将数字舍入到最接近的十位数字。例如,2013 -> 2010,同时也是2019 -> 2010。以下方法适用于我:
$number = 2019;
echo(round($number -5,-1) . "<br>");
您可以使用"整数除法"运算符, DIV
:
SELECT 812 DIV 10 * 10;
虽然TRUNCATE()
似乎是将数字“舍入”到10、100等的更好选项,但DIV
也可以用于将数字“舍入”到其他值,例如分钟:
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 |
+---------------------+---------------------------------------------+