
-- ============================================= -- Author: <Author,,CC> -- Create date: <Create Date,, 2014-05-26 10:43:07.080> -- Description: <Description,,小數點轉換為百分數,並對第3位進行4舍5入> -- Environment: <Version,, Microsoft SQL Server 2008 R2 (RTM) - 10.50.1600.1 (X64))> -- ============================================= /*------------------------------------------------------------------------ 2種思路的計算方法: 1種是直接decimal 類型可以設置精度為4,小數位為2,這樣會自動的把小數為3的數字進行四舍五入掉 2種是就是我們對小數點位數進行加法計算來滿足達到四舍五入的條件(即變量+0.005)這個時候可以使用int類型 以下為實現方法: --------------------------------------------------------------------------*/ ------------------------- 方法1 --------------------------------------- declare @i int = 3 declare @it int = 7 select (@i*1.0)/@it [小數點] -- 因為數據類型為int所以,需要*1.0來進行轉換,如果直接是帶有小數點位數可以跳過這一步 select ((@i*1.0)/@it)*100 [分子] --把小數點轉換為所需要的百分比分子值需要乘以100 select CAST( ((@i*1.0)/@it)*100 as decimal(5,0)) [4舍5入之后2位小數點的百分數] --保留2位小數點,也是對小數位進行4舍5入的一步 select LTRIM(CAST( ((@i*1.0)/@it)*100 as decimal(5,0)))+'%' [百分數] -- 加%號以合成百分比,也可以使用下面的方法來進行轉換因為另外的一種方法,只能使用轉換varchar類型 select CAST(CAST( ((@i*1.0)/@it)*100 as decimal(5,0)) as varchar(10))+ '%' [百分數] ------------------------- 方法2 ----------------------------------------- declare @i int = 3 declare @it int = 7 select (@i*1.0)/@it [小數點] -- 因為數據類型為int所以,需要*1.0來進行轉換,如果直接是帶有小數點位數可以跳過這一步 select ((@i*1.0)/@it)+0.005 [4舍5入] -- 對得到的結果進行+0.005以取得第三位小數點4四5入的結果 select (((@i*1.0)/@it)+0.005)*100 [帶小數點的分子] -- *100 把小數點轉換為百分比的分子 select CAST((((@i*1.0)/@it)+0.005)*100 as int) [分子] -- 把第2位小數點之后的數字進行截取,轉換為整數 select CAST(CAST((((@i*1.0)/@it)+0.005)*100 as int) as varchar(10)) + '%' [百分數] --把整型轉換為字符型的數據類型,加上百分號