扫二维码与项目经理沟通
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流
round返回数字表达式并四舍五入为指定的长度或精度。
成都创新互联2013年开创至今,是专业互联网技术服务公司,拥有项目成都网站建设、做网站网站策划,项目实施与项目整合能力。我们以让每一个梦想脱颖而出为使命,1280元丹凤做网站,已为上家服务,为丹凤各地企业和个人服务,联系电话:028-86922220
显示的界面上要求只保留到小数点后4位,发现round(表达式,4,1)可以截断小数点4位后的数字
如果写(round,4)表示对小数点后4位四舍五入,但不截断多的0
在SQL Server中,实际上小数数值只有两种数据类型:float 和 decimal,分别是近似数值和精确数值。
float 表示近似数值,存在精度损失,数据类型是 float(n),n是可选的,默认类型是float(53),占用8bytes。虽然n的取值范围是1-53,实际上,float 只能表示两种类型float(53) 和 float(24),分别占用 8Bytes 和 4Bytes。
decimal不存在精度损失,数据类型decimal(p,s) 需要分别指定小数的最大位数(p)和小数位的数量(s)。decimal 数据类型的最大精度为 38。即decimal 数据类型最多可以存储 38位数字,所有这些数字均可位于小数点后面。decimal 数据类型存储精确的数字表示形式,没有近似值。
扩展资料:
双精度(double precision)数据类型等价于 float(53),real等价于float(24),numeric是 decimal的同义词,应该避免在程序中直接使用 double precision、real和numeric,而是用 float(24) 、float(53)和decimal 代替。
float是近似数值,存在精度缺失;decimal是精确数值,不存在精度损失。当数值不允许精度丢失时,使用 decimal数据类型存储数据。在计算小数的除法时,SQL Server 内部隐式升级数据类型,根据小数数值的数据类型,就近向float(24) 或float(53)转换。
写个函数就行了 很简单 主题代码如下 可在sqlserver 直接运行
declare @aaa varchar(50)='3213.434'
if (substring(@aaa ,charindex('.',@aaa)+1,LEN(@aaa)-charindex('.',@aaa)-1) 3)
begin
print cast( cast(@aaa as numeric(18,3)) as varchar(50))
end
else
print @aaa
直接运行看打印的结果, 这里是直接截取 如果要四舍五入 用round 函数。 改成函数应该不用我说了吧 加个壳 把 print 改成 return 返回出去
先将分子或分母或两个都转化成8小数精度以上的类型,decimal,numeric,float 都可以。
然后做除法计算,将计算结果转化为8位小数。
select convert(decimal(18,8), convert(decimal(18,8),1)/3)
select convert(decimal(18,8), 1/convert(decimal(18,8),3))
select CONVERT(decimal(18,8), convert(float,1)/3)
select CONVERT(decimal(18,8), 1/convert(float,3))
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流