如何在MySQL中将数值向下取整至最接近的整数?
例如:12345.7344
向下取整为 12345
MySQL 的 round()
函数是向上取整。
我不知道这些数值的长度和小数位数,可能是有10位数字和4位小数,也可能是有2位数字和7位小数。
如何在MySQL中将数值向下取整至最接近的整数?
例如:12345.7344
向下取整为 12345
MySQL 的 round()
函数是向上取整。
我不知道这些数值的长度和小数位数,可能是有10位数字和4位小数,也可能是有2位数字和7位小数。
使用FLOOR函数:
SELECT FLOOR(your_field) FROM your_table
FLOOR()
函数应用于两个子查询的差值(子查询的差值为-70.00)时,它返回了0。你以前见过这种情况吗? - tread使用FLOOR()函数。
它会将你的十进制数舍入到较小的整数。例如:
SELECT FLOOR(1.9) /* return 1 */
SELECT FLOOR(1.1) /* return 1 */
如果你想将小数四舍五入到最近的整数,请使用ROUND()。例如:
SELECT ROUND(1.9) /* return 2 */
SELECT ROUND(1.1) /* return 1 */
如果你想将小数四舍五入到最小的整数,请使用FLOOR()函数。例如:
SELECT CEILING(1.9) /* return 2 */
SELECT CEILING(1.1) /* return 2 */
SUBSTR
在某些情况下比FLOOR
更好,因为FLOOR
存在以下“漏洞”:
SELECT 25 * 9.54 + 0.5 -> 239.00
SELECT FLOOR(25 * 9.54 + 0.5) -> 238 (oops!)
SELECT SUBSTR((25*9.54+0.5),1,LOCATE('.',(25*9.54+0.5)) - 1) -> 239
FLOOR()函数返回小于等于给定数字的最大整数值。
example :
SELECT FLOOR(columnName) FROM tableName;
select floor(desired_field_value) from table
select round(desired_field_value-0.5) from table
DECLARE @Num NUMERIC(18, 7) = 19.1471985
SELECT FLOOR(@Num * 10000) / 10000
输出:19.147100 清除:985 添加:00
或使用此代码:
SELECT SUBSTRING(CONVERT(VARCHAR, @Num), 1, CHARINDEX('.', @Num) + 4)
输出:19.1471 清除:985
这两个查询在MySQL中用于将最近的整数向下取整
FLOOR()
已经被发布为答案。你在哪里找到了NULL()
函数? - forpas试试这个,
SELECT SUBSTR(12345.7344,1,LOCATE('.', 12345.7344) - 1)
或者
SELECT FLOOR(12345.7344)
SELECT Round(12345.7344/12345) * 12345;