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

我怎么会舍入到MySQL中最接近的整数?

例如: 12345.7344 rounds to 12345

mysql的round()函数四舍五入。

我不知道这个值和小数点会有多长,可能是10位数,小数点后4位,可能是2位数,小数点后7位。

使用FLOOR :

 SELECT FLOOR(your_field) FROM your_table 

如果要将小数点四舍五入到较低的整数,请使用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 

在某些情况下, 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 
 SELECT FLOOR(12345.7344); 

在这里阅读更多。

尝试这个,

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

要么

 SELECT FLOOR(12345.7344) 

SQLFiddle演示

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

 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