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

问题描述 投票:0回答:9

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

示例:

12345.7344 rounds to  12345

mysql 的

round()
函数向上取整。

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

mysql sql rounding
9个回答
146
投票

使用地板

SELECT FLOOR(your_field) FROM your_table

69
投票

使用 FLOOR()

它将把小数点四舍五入为lower整数。例子:

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 */

如果您想将小数四舍五入为upper整数,请使用CEILING()。例子:

SELECT CEILING(1.9) /* return 2 */
SELECT CEILING(1.1) /* return 2 */

5
投票
SELECT FLOOR(12345.7344);

阅读更多这里


4
投票
在某些情况下

SUBSTR
会比
FLOOR
更好,因为FLOOR有一个“bug”,如下:

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
投票

FLOOR() 函数将返回小于或等于某个数字的最大整数值。

example :
SELECT FLOOR(columnName) FROM tableName;

2
投票

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

  • 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。


1
投票

试试这个,

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

SELECT FLOOR(12345.7344)

SQLFiddle 演示


1
投票

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

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

1
投票

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

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

或者使用这个:

SELECT CONVERT(INT, 19.99999)

输出:19

© www.soinside.com 2019 - 2024. All rights reserved.