如何在MySQL中舍入到最接近的整数?

时间:2012-09-11 00:30:18

标签: mysql sql rounding

我如何向下舍入到MySQL中最接近的整数?

示例:12345.7344 rounds to 12345

mysql的round()函数完成了。

我不知道值和小数位是多长,可能是10位数,带有4位小数,可能是2位数,带有7位小数。

8 个答案:

答案 0 :(得分:94)

使用FLOOR

SELECT FLOOR(your_field) FROM your_table

答案 1 :(得分:31)

如果要将小数舍入为较低整数,请使用FLOOR()。例子:

FLOOR(1.9) => 1
FLOOR(1.1) => 1

如果要将小数舍入为最接近的整数,请使用ROUND()。例子:

ROUND(1.9) => 2
ROUND(1.1) => 1

如果要将小数舍入为整数,请使用CEIL()。例子:

CEIL(1.9) => 2
CEIL(1.1) => 2

答案 2 :(得分:4)

在某些情况下,

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

答案 3 :(得分:3)

SELECT FLOOR(12345.7344);

了解更多here

答案 4 :(得分:1)

试试这个,

SELECT SUBSTR(12345.7344,1,LOCATE('.', 12345.7344) - 1)

SELECT FLOOR(12345.7344)

SQLFiddle Demo

答案 5 :(得分:0)

如果你需要小数,可以使用这个

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

答案 6 :(得分:0)

可以通过以下两种方式完成:

  • select floor(desired_field_value) from table
  • select round(desired_field_value-0.5) from table

第二种解释:假设12345.7344整数。因此,12345.7344-0.5 = 12345.2344, 四舍五入的结果将是12345。

答案 7 :(得分:0)

两个查询都用于在 MySQL 中向下舍入最接近的整数

  1. 选择楼层(445.6);
  2. 选择 NULL(222.456);