是否可以在 SQL 中将小于 1 的数字四舍五入,同时保持十进制形式
Is It Possible to Round a Number Smaller Than 1 In SQL While Keeping In Decimal Form
尽管专门寻找这个问题,但我没有找到解决方案。
下面的查询是我试图让最后的小数位正确显示。
select CAST(CAST(33 as float)/100 as decimal(5,3))
从这里我正在寻找如何正确舍入到 .33 或者如果结果是 .339 舍入到 .34
我发现它只会向下舍入为 0,因为它不是整数。
谁能给我指出正确的方向,或者如果没有好的方法让我知道。
你可以试试这个:
MySQL:
select ROUND(339/1000,2)
0.34
select ROUND(33/100,2)
0.33
SQL 服务器:
select ROUND(339/1000.0,2)
0.340000
select ROUND(33/100.0,2)
0.330000
确保您的分母未被视为整数。您可以添加 .0
或 CAST
或 CONVERT
。如果您希望进行四舍五入:
SELECT 331 / 1000.0;
-- gives 0.331000
SELECT ROUND(331 / 1000.0, 2);
-- gives 0.330000
SELECT CAST(ROUND(331 / 1000.0, 2) AS DECIMAL(5, 2));
-- gives 0.33
在您期望发生四舍五入的情况下:
SELECT 339 / 1000.0;
-- gives 0.339000
SELECT ROUND(339 / 1000.0, 2);
-- gives 0.340000
SELECT CAST(ROUND(339 / 1000.0, 2) AS DECIMAL(5, 2));
-- gives 0.34
注意:您可能不需要同时执行 ROUND
和 CAST
,因为我相信四舍五入是隐式发生的,但如果您选择这样写,它的意图会更加清晰。
尽管专门寻找这个问题,但我没有找到解决方案。
下面的查询是我试图让最后的小数位正确显示。
select CAST(CAST(33 as float)/100 as decimal(5,3))
从这里我正在寻找如何正确舍入到 .33 或者如果结果是 .339 舍入到 .34
我发现它只会向下舍入为 0,因为它不是整数。
谁能给我指出正确的方向,或者如果没有好的方法让我知道。
你可以试试这个:
MySQL:
select ROUND(339/1000,2)
0.34
select ROUND(33/100,2)
0.33
SQL 服务器:
select ROUND(339/1000.0,2)
0.340000
select ROUND(33/100.0,2)
0.330000
确保您的分母未被视为整数。您可以添加 .0
或 CAST
或 CONVERT
。如果您希望进行四舍五入:
SELECT 331 / 1000.0;
-- gives 0.331000
SELECT ROUND(331 / 1000.0, 2);
-- gives 0.330000
SELECT CAST(ROUND(331 / 1000.0, 2) AS DECIMAL(5, 2));
-- gives 0.33
在您期望发生四舍五入的情况下:
SELECT 339 / 1000.0;
-- gives 0.339000
SELECT ROUND(339 / 1000.0, 2);
-- gives 0.340000
SELECT CAST(ROUND(339 / 1000.0, 2) AS DECIMAL(5, 2));
-- gives 0.34
注意:您可能不需要同时执行 ROUND
和 CAST
,因为我相信四舍五入是隐式发生的,但如果您选择这样写,它的意图会更加清晰。