加入收藏 | 设为首页 | 会员中心 | 我要投稿 湖南网 (https://www.hunanwang.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程 > 正文

Sql Server Decimal(30,10)丢失最后2位小数

发布时间:2021-01-17 20:10:35 所属栏目:编程 来源:网络整理
导读:当在Sql Server 05平分别2个十进制(30,10)数字时,2个最后的小数好像丢失(乃至没有舍入,只是截断). 譬喻: Declare @x decimal(30,10)Declare @y decimal(30,10)Declare @z decimal(30,10)select @x = 2.1277164747 select @y = 4.8553794574Select @z = @y/@x

当在Sql Server 05平分别2个十进制(30,10)数字时,2个最后的小数好像丢失(乃至没有舍入,只是截断).

譬喻:

Declare @x decimal(30,10)
Declare @y decimal(30,10)
Declare @z decimal(30,10)

select @x = 2.1277164747 
select @y = 4.8553794574

Select @z = @y/@x   
select @z

功效:2.2819673100

可是,假如将2个被支解的数字转换为浮点数好像有用:

....
Select @z = cast(@y as float)/cast(@x as float)
select @z

功效:2.2819673181

为什么Sql这样做?什么是在不失去Sql精度的环境下分别小数的正确要领.

办理要领

SQL Server中应承的最大精度为38.您行使的是十进制(30,10).最大值为99,999,999.9999999999假如将此数字除以0.000000001,最终会获得一个更大的数字,因今天生的数据范例必需可以或许容纳它.这会导致您失去一些准确度.

将原始数据范例变动为十进制(20,10),而且不会呈现此题目.

有关数据范例的完备法则(以及它们怎样受数学运算影响):

Full rules here

(编辑:湖南网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读