【问题标题】:Rounded to 4 decimal places, but output shows 4 decimal places + 4 0s in MS SQL Server四舍五入到小数点后 4 位,但在 MS SQL Server 中输出显示小数点后 4 位 + 4 个 0
【发布时间】:2022-06-26 17:28:42
【问题描述】:

我正在 HackerRank 的 Weather Observation Station 17 上工作。 查询STATION最小北纬(LAT_N)大于38.7780的西经(LONG_W)。将您的答案四舍五入到小数点后 4 位。

表:STATION 字段:ID、CITY、STATE、LAT_N、LONG_W 其中LAT_N是北纬,LONG_W是西经。

我的代码:

SELECT ROUND(LONG_W,4,0) AS low
FROM STATION
WHERE LAT_N = (SELECT MIN(LAT_N) FROM STATION WHERE LAT_N > 38.7780);

输出: 70.13780000 答案是错误的。我在网上查了这个问题,其他答案中的代码看起来都一样。我正在使用 MS SQL Server。 相同的代码在 MySQL 上运行良好

【问题讨论】:

  • LONG_W的数据类型是什么? ROUND 不会改变值的数据类型;它只是 rounds 它。
  • LONG_W 和 LAT_N 是数字。
  • number 不是 SQL Server 中的数据类型... LONG_Wreal 还是 floatdecimal(27,14)? varchar(20)?还有什么?
  • 问题提到的数字。 LONG_W 有 8 个小数点,现在它是有意义的。谢谢!

标签: sql sql-server numbers decimal


【解决方案1】:

ROUND 函数将返回与输入相同的数据类型、精度和小数位数:

select round(1.10045001, 4); -- 1.10050000
select round(1.10055001, 4); -- 1.10060000

您需要CAST(... AS DECIMAL(..., 4)) 才能生成正好有 4 位的小数。该函数将在转换过程中使用与ROUND 相同的算法对值进行四舍五入:

select cast(1.10045001 as decimal(18, 4)); -- 1.1005
select cast(1.10055001 as decimal(18, 4)); -- 1.1006

【讨论】:

    【解决方案2】:

    我只是不会使用ROUND

    SELECT CONVERT(decimal(12,4), LONG_W) AS low
    FROM STATION
    WHERE LAT_N = (SELECT MIN(LAT_N) FROM STATION WHERE LAT_N > 38.7780);
    

    也更高效:

    SELECT TOP (1) CONVERT(decimal(12,4), LONG_W) AS low
    FROM STATION
    WHERE LAT_N > 38.7780
    ORDER BY LAT_N;
    

    【讨论】:

      【解决方案3】:

      对于 MS SQL

      SELECT CAST(LONG_W AS DECIMAL(10, 4))
      FROM STATION
      WHERE LAT_N = ( SELECT MIN(LAT_N) FROM STATION WHERE LAT_N > 38.7780);
      

      【讨论】:

        【解决方案4】:

        MS SQL 服务器:

        从 STATION 中选择 TOP 1 CAST(LONG_W AS DECIMAL(10,4)) LAT_N > 38.7780 按 LAT_N ASC 排序

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2014-06-03
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2012-05-09
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多