小数点转百分比

-- =============================================
-- 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)) + ‘%‘ [百分数]
--把整型转换为字符型的数据类型,加上百分号
时间: 2024-08-29 02:56:29

小数点转百分比的相关文章

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

sql 除法运算结果为小数时显示0的解决方案 或者百分比

SELECT field1/field2 FROM TB; 当 field1的数值 > field2的数值时,除法得出的结果是<1的,即0.xxxxxx 这个时候在DB2的环境下SELECT出来的值是0 解決方法: 先把field1转换成DOUBLE类型的,这样计算出来的就会得出小数点了,会显示出0.xxxx SELECT CAST(field1 AS FLOAT)/field2 FROM TB; ps.網上搜的資料,寫的是double,但在SQL Server2008中一直報錯,改成FLOA

SQL Server 字段类型 decimal(18,6)小数点前是几位?记一次数据库SP的BUG处理

原文:SQL Server 字段类型 decimal(18,6)小数点前是几位?记一次数据库SP的BUG处理 SQL Server 字段类型 decimal(18,6)小数点前是几位? 不可否认,这是一个很低级的问题.... 为什么会问这么低级的问题? 由于这个问题,导致一个数据导入的SP执行失败....以至于困扰了我好几个小时.... 事情是这样的... 公司总部上了一套Oracle的ERP,我们系统中有些数据要从里面取,比如Supplier,Product等. Oracle会导出数据文件,我

Excel计算百分比时分母为0的处理

作者:iamlaosong 实际工作中经常碰到百分比计算,但是,如果分母为0,则单元格显示#DIV/0!,可以用if函数进行判断(直接判断分母,或者用iserror(A1/B1)或isnumber(A1/B1)函数判断计算结果),这样就不会显示#DIV/0!,显示什么,可以根据需要设定,例如: =IF(B1<>0,A1/B1,0)     ' 分母为0时显示0 =IF(B1<>0,A1/B1,1)     ' 分母为0时显示1 =IF(B1<>0,A1/B1,"

MySQL计算百分比方法介绍

根据相应条件抽出相应count数(myCount) 抽出总count数(totalCount) 计算百分比:myCount / totalCount * 100 四舍五入:使用ROUND函数ROUND(number,要保留的小数位),ROUND(myCount / totalCount * 100,1) 下面给出示例供参考: SELECT ROUND(T1.co/T2.totalCo*100,1)    FROM      (SELECT COUNT(*) AS co        FROM f

我的Android进阶之旅------&gt;Java字符串格式化方法String.format()格式化float型时小数点变成逗号问题

今天接到一个波兰的客户说有个APP在英文状态下一切运行正常,但是当系统语言切换到波兰语言的时候,程序奔溃了.好吧,又是我来维护. 好吧,先把系统语言切换到波兰语,切换到波兰语的方法查看文章 我的Android进阶之旅------>Android[设置]-[语言和输入法]-[语言]列表中找到相应语言所对应的列表项 地址:http://blog.csdn.net/ouyang_peng/article/details/50209789 ================================

python 带小数点时间格式化

#获取带小数点的时间>>> import datetime #当前时间加3天 >>> t1 = datetime.datetime.now() + datetime.timedelta(days=3) >>> print(t1) 2017-04-03 10:42:50.714910 将带小数点的时间字符串解析 >>> time.strptime('2017-06-07 21:39:34.352885','%Y-%m-%d %H:%M:

background-position百分比原理

今天帮别人调代码时,看到一个样式: background-position: 50% 0;background-size: 100% auto: 对background-size:100% auto,意思是背景图片宽度为元素宽度*100%,高度等比缩放.详情可见css3 background. 对background-position很自然的以为百分比是根据父元素宽度计算的,但background-position真的不是,它有一套自己的原理.下面详细介绍. 一.等价写法 在看各类教程时有以下等

如何为无法获取进度百分比的耗时操作增加“伪进度条”?

在实际开发中,可能会遇到这样的场景:“一个操作非常耗时,但却无法获取其进度百分比”.造成这种情况的原因可能有: 1)该操作属于第三方库(泛指我们使用但无法修改的第三方代码,因此质量有高有底),可能由于第三方库作者没有意识到这个操作在某些情况下会非常耗时,没有提供进度值. 2)某些操作压根就无法计算进度或者计算进度要牺牲极大的效率. 这种场景,执行这样的耗时操作会导致程序UI假死.为了提高用户体验,我们可以为该操作提供一个假的进度条,即保证程序UI不假死.我们将耗时操作放到子线程中去执行,然后在G