小编Myt*_*kos的帖子

关于十进制算术的问题

我认为我对精度与比例的理解可能不正确,因为以下示例产生的值对我来说没有意义。decimal(32, 14)轮结果到6位小数,而decimal(18, 14)发到19我的理解小数的是decimal(p, [s]),这里p是数字的总数,s是数字的小数点(IG后的数字,decimal(10, 2)会导致8位,左侧是小数和 2 位数字)。这不正确吗?

我创建了一个小例子来说明看似奇怪的行为:

--------------------
-- Truncates at pipe
-- 1.043686|655...
--------------------
declare @dVal1 decimal(32, 14) = 10
declare @dVal2 decimal(32, 14) = 9.581419815465469

select @dVal1 Val1, @dVal2 Val2, @dVal1 / @dVal2 CalcResult

----------------
-- Most accurate
----------------
declare @dVal3 decimal(18, 14) = 10
declare @dVal4 decimal(18, 14) = 9.581419815465469

select @dVal3 Val3, @dVal4 Val4, @dVal3 / @dVal4 CalcResult
Run Code Online (Sandbox Code Playgroud)

那么问题来了,我缺少什么来理解这一点?我读过的文章和 msdn 博客似乎没有提供清晰的信息(至少对我的思考过程而言)。有人可以向我解释为什么更高的精度似乎会导致比例损失?

sql-server datatypes decimal sql-server-2016

5
推荐指数
1
解决办法
217
查看次数

标签 统计

datatypes ×1

decimal ×1

sql-server ×1

sql-server-2016 ×1