97

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

例子:12345.7344 rounds to 12345

mysql的round()功能四舍五入。

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

4

8 回答 8

137

使用地板

SELECT FLOOR(your_field) FROM your_table
于 2012-09-11T00:32:08.253 回答
61

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

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

SELECT CEILING(1.9) /* return 2 */
SELECT CEILING(1.1) /* return 2 */
于 2015-10-07T05:53:37.120 回答
4
SELECT FLOOR(12345.7344);

在这里阅读更多。

于 2012-09-11T00:32:42.493 回答
3

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
于 2014-04-04T05:45:59.603 回答
1

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

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

于 2019-08-07T16:39:49.493 回答
0

尝试这个,

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

或者

SELECT FLOOR(12345.7344)

SQLFiddle 演示

于 2012-09-11T00:33:36.830 回答
0

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

  1. 选择楼层(445.6);
  2. 选择空(222.456);
于 2021-01-13T15:28:03.133 回答
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

于 2016-01-04T19:28:34.043 回答