【问题标题】:How to round down to nearest integer in MySQL?如何在 MySQL 中四舍五入到最接近的整数?
【发布时间】:2012-09-03 21:10:30
【问题描述】:

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

示例:12345.7344 rounds to 12345

mysql 的round() 函数向上取整。

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

【问题讨论】:

  • 你的例子没有四舍五入到最接近的整数!
  • @PatrickHonorez 您的评论是针对一个已有 5 年历史的问题,并且似乎误解了该问题。 OP 要求一个函数将向下舍入到最接近的整数。
  • @WarrenSergent 确实:-/

标签: mysql sql rounding


【解决方案1】:

使用FLOOR:

SELECT FLOOR(your_field) FROM your_table

【讨论】:

  • 谢谢。在我阅读有关 round() 的整个过程中,它一直盯着我看。
  • 好的,我已经删除了该评论,我确实尝试过,当 FLOOR() 是 2 个子查询之间的差异(子查询差异为 -70.00)时,它返回 0...以前见过吗?
【解决方案2】:
SELECT FLOOR(12345.7344);

阅读更多here

【讨论】:

    【解决方案3】:

    试试这个,

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

    SELECT FLOOR(12345.7344)
    

    SQLFiddle Demo

    【讨论】:

      【解决方案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
      

      【讨论】:

      • 我刚刚在 MySQL 5.6.40 上测试了 SELECT FLOOR(25 * 9.54 + 0.5) 并返回 239。
      【解决方案5】:

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

      【讨论】:

      • Round() 函数对我有用。
      【解决方案6】:

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

      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

      【讨论】:

        【解决方案7】:

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

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

        【讨论】:

          【解决方案8】:

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

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

          【讨论】:

          • FLOOR() 已作为答案发布。你在哪里找到函数NULL()
          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2011-03-21
          • 1970-01-01
          • 2017-10-05
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多