十進制值我有一個表達:如何截斷SQL Server 2000中
Select (2345789 * 39.456)/100
輸出是925554.5078400
。
我想顯示925554.50
即小數點後的2個值。
如果我使用圓形
Select round((2345789 * 39.456)/100, 1)
輸出爲925554.5000000
。但是我想在小數點後兩位數。怎麼做?
十進制值我有一個表達:如何截斷SQL Server 2000中
Select (2345789 * 39.456)/100
輸出是925554.5078400
。
我想顯示925554.50
即小數點後的2個值。
如果我使用圓形
Select round((2345789 * 39.456)/100, 1)
輸出爲925554.5000000
。但是我想在小數點後兩位數。怎麼做?
說明明顯,但925554.5000000和925554.50是相同的數字。
如果你想顯示這個數字有兩位小數,那麼這是你的UI代碼,而不是你的數據庫的問題。
說了這麼多,如果你必須做到這一點在數據庫本身然後嘗試類似:
-- 1 decimal place
SELECT CAST(ROUND(@yourNumber, 1, 1) AS DECIMAL(18, 1))
-- 2 decimal places
SELECT CAST(ROUND(@yourNumber, 2, 1) AS DECIMAL(18, 2))
-- 3 decimal places
SELECT CAST(ROUND(@yourNumber, 3, 1) AS DECIMAL(18, 3))
-- 4 decimal places
SELECT CAST(ROUND(@yourNumber, 4, 1) AS DECIMAL(18, 4))
嘗試(未測試):
SELECT CAST(number as decimal(18,2))
如果我給SELECT CAST(((2345789 * 39.456)/ 100)爲十進制(18,2)),則wroking不錯,但它太四捨五入。 我得到925554.51而不是925554.50 – 2009-07-02 10:46:25
我有解決方案還採用截斷值
Select (2345789 * 39.456)/100 result-925554.5078400
select cast (ROUND((2345789 * 39.456)/100 ,2,1)as decimal(18,2)) result-925554.50
select cast (ROUND((2345789 * 39.456)/100 ,3,2)as decimal(18,3)) result-925554.507
select cast (ROUND((2345789 * 39.456)/100 ,4,3)as decimal(18,4)) result-925554.5078
確定。我希望你從中明白。
參見:
select ROUND(12345.67890,-4) --result: 10000.00000
select ROUND(12345.67890,-3) --result: 12000.00000
select ROUND(12345.67890,-2) --result: 12300.00000
select ROUND(12345.67890,-1) --result: 12350.00000
select ROUND(12345.67890,0) --result: 12346.00000
select ROUND(12345.67890,1) --result: 12345.70000
select ROUND(12345.67890,2) --result: 12345.68000
select ROUND(12345.67890,3) --result: 12345.67900
select ROUND(12345.67890,4) --result: 12345.67890
select ROUND(12345.67890,-4,1) --result: 10000.00000
select ROUND(12345.67890,-3,1) --result: 12000.00000
select ROUND(12345.67890,-2,1) --result: 12300.00000
select ROUND(12345.67890,-1,1) --result: 12340.00000
select ROUND(12345.67890,0,1) --result: 12345.00000
select ROUND(12345.67890,1,1) --result: 12345.60000
select ROUND(12345.67890,2,1) --result: 12345.67000
select ROUND(12345.67890,3,1) --result: 12345.67800
select ROUND(12345.67890,4,1) --result: 12345.67890
您可以使用:
select ROUND(12345.67890,1) --result: 12345.70000
或者:
select ROUND(12345.67890,1,0) --result: 12345.70000
注: ROUND(數值_表達式,長度[,函數])
數值_
是對精確數值或近似數字數據類型類別的表達式,除了位數據類型。
長度
是,其數值_要被倒圓的精度。長度必須是tinyint,smallint或int類型的表達式。當長度爲正數時,numeric_expression將四捨五入爲長度指定的小數位數。當長度爲負數時,numeric_expression會在小數點左側進行四捨五入,如長度所指定。
功能
是操作的執行類型。函數必須是tinyint,smallint或int。當省略函數或值爲0(默認值)時,numeric_expression將被舍入。如果指定的值不是0,則numeric_expression將被截斷。
不,它不應該四捨五入。如果我給SELECT CAST(((2345789 * 39.456)/ 100)作爲十進制(18,3)),我期望得到輸出爲 925554.507而不是925554.508。 如果我使用SELECT CAST(ROUND((2345789 * 39.456)/ 100,1)AS DECIMAL(18,2)),則輸出爲925554.500。 另外,可能是我給出的例子,這裏是.50,但如果它說的是1.23498567,那麼我需要1.23而不是1.20。 希望你明白。 – 2009-07-02 10:54:43