它足以使用round(value,2)
四捨五入plsql中的列值。例如1.2222可以通過plsql中的該函數轉換爲1.22。四捨五入到SQL Server 2008中的兩位數
我怎麼能在SQL Server中做到這一點?當我使用round(1.2222,2)
時,它轉換成1.2200。我想要1.22。感謝您的幫助
它足以使用round(value,2)
四捨五入plsql中的列值。例如1.2222可以通過plsql中的該函數轉換爲1.22。四捨五入到SQL Server 2008中的兩位數
我怎麼能在SQL Server中做到這一點?當我使用round(1.2222,2)
時,它轉換成1.2200。我想要1.22。感謝您的幫助
數學上,1.2200和1.22是完全相同的數字。
數字的顯示實際上是一個與數字的物理內容不同的字符串,所以數字在SQL Server和Oracle中四捨五入,它只是顯示不同。
更多,約SQL浮點類型:如果你聲明一個變量爲具有小號小數,它會始終顯示爲有小號小數位,無論這個值,例如
declare @x decimal(10,6)
declare @y decimal(10,2)
set @x =3
set @[email protected] -- identical to set @y=cast(@x as decimal(10,2))
select @x -- selects 3.000000
select @y -- selects 3.00
select 'The number is ' + cast(@x as varchar) -- selects 'The number is 3.000000'
select 'The number is ' + cast(@y as varchar) -- selects 'The number is 3.00'
然而,關於3.00和3.0000的含義有一個技術上的區別,那就是數字的相對誤差。由於所有實數都是四捨五入的,3.00實際上意味着3 +/- 0.005,而3.0000實際上是3 +/- 0.00005,因爲已知更多有效數字。
十進制(10,4)和十進制(10,2)是兩種不同的類型。所以25.55和25.5555是不同的類型。但如果你使用float(4),那麼這兩個數字是相同的數據類型。
可能重複[在SQL Server中舍入](http://stackoverflow.com/questions/4931050/rounding-off-in-sql-server) – codingbadger 2011-03-31 08:22:40
使用CAST/CONVERT來精確到2的小數類型,這將會自動進行舍入 – RichardTheKiwi 2011-03-31 08:32:15