四舍五入到小数点后 4 位,但在 MS SQL 服务器中输出显示小数点后 4 位 + 4 个 0
Rounded to 4 decimal places, but output shows 4 decimal places + 4 0s in MS SQL Server
我正在 HackerRank 的 Weather Observation Station 17 工作。
查询STATION中最小的北纬(LAT_N)大于38.7780的西经(LONG_W)。将您的答案四舍五入到小数点后 4 位。
Table:车站
字段:ID、城市、州、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 服务器。
相同的代码在 MySQL
上运行良好
我就是不会用 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;
ROUND
函数将 return 与输入相同的数据类型、精度和小数位数:
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
女士 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);
我正在 HackerRank 的 Weather Observation Station 17 工作。 查询STATION中最小的北纬(LAT_N)大于38.7780的西经(LONG_W)。将您的答案四舍五入到小数点后 4 位。
Table:车站 字段:ID、城市、州、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 服务器。 相同的代码在 MySQL
上运行良好我就是不会用 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;
ROUND
函数将 return 与输入相同的数据类型、精度和小数位数:
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
女士 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);