[英]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))
從這里我正在尋找如何正確四舍五入到 0.33 或者如果結果是 0.339 到四舍五入到 0.34
我發現它只會向下舍入為 0,因為它不是整數。
有人可以指出我正確的方向,或者如果沒有好的方法讓我知道。
確保您的分母不被視為整數。 您可以添加.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
因為我相信四舍五入是隱式發生的,但是如果您選擇這樣編寫它會使意圖更加清晰。
你可以試試這個:
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
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.