首页 > 代码库 > T-SQL 小数点转换百分数

T-SQL 小数点转换百分数

-- =============================================
-- 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)) + % [百分数]
--把整型转换为字符型的数据类型,加上百分号

以上方法只是示例求得百分数,实际中可能需要根据数据类型和需求来进行微调