您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

SQL Server:十进制精度/小数位数产生奇怪的结果

SQL Server:十进制精度/小数位数产生奇怪的结果

关于价值的奥秘以及何时应用该函数文档尚不完整,但这是基于该文档的调查结果表。6``max

如其所言,除法公式为:

结果精度= p1-s1 + s2 + max(6,s1 + p2 + 1) ,结果标度= max(6,s1 + p2 + 1)

并且,正如您自己突出显示的那样,我们将添加脚注:

结果精度和小数位的绝对最大值为38。当结果精度大于38时,相应的小数位会减小,以防止结果的整数部分被截断。

因此,这是我在电子表格中生成内容

p1 s1 p2 s2 prInit srInit prOver prAdjusted srAdjusted
38 16 38 16 93     55     55     38         6
28 16 28 16 73     45     35     38         10
29 16 29 16 75     46     37     38         9

因此,我正在使用prsr指示结果的精度和小数位数。该prInitsrInit的公式是完全从文档的forumlas。我们可以看到,在所有3种情况下,结果的精度都远远大于38,因此脚注适用。prOver只是max(0,prInit - 38)-如果脚注适用,我们必须调整多少精度。prAdjusted就是prInit - prOver在这三种情况下,我们都可以看到结果的最终精度为38

如果我申请了 相同的 调整因子,去鳞,那么我会得到的结果0109。但是我们可以看到,您针对该(38,16)案例的结果的等级为6。因此,我认为那是max(6,...文档部分实际适用的地方。所以我的最终公式srAdjustedmax(6,srInit-prOver),现在我的最终Adjusted值似乎与您的结果匹配。

而且,当然,如果我们参考的文档decimal,我们可以看到 精度和小数位数(如果您未指定的话)为(18,0),因此这是未指定精度和小数位数的行:

p1 s1 p2 s2 prInit srInit prOver prAdjusted srAdjusted
18 0  18 0  37     19     0      37         19
SQLServer 2022/1/1 18:52:52 有326人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶