簡體   English   中英

sql服務器回合

[英]sql server round

select round((cast(56/3 AS DECIMAL (4,2))),1)

顯示的是18個輸出而不是19個,實際值為18.66。 我的回合功能不起作用,請幫忙。

問題是56/3整數計算,這意味着沒有浮點數。

您需要在初始計算中使用浮點數,例如56.0/3 另外,如果要舍入到19,則需要舍入到最接近的整數ROUND(x, 1)將舍入到小數點后第一位-您需要傳遞0以舍入到19。

SELECT ROUND((CAST(56.0/3 AS DECIMAL (4,2))),0)

或者,您可以將ROUND切換為CEILING

select CEILING(CAST(56.0/3 AS DECIMAL(4,2)))

您的代碼部分:

CAST( 56/3 AS DECIMAL )

首先評估返回值為18的56/3 。然后將其轉換為十進制,得出18.0。

您需要在除法發生之前強制轉換分子或分母。

round功能運行良好-只是不使用您認為正確的輸入。

除以數字之前,請轉換整數值之一:

select round(56/convert(DECIMAL (4,2),3),0);

如果不這樣做,則將整數相除,結果為18而不是18.66

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM