Ciu*_*caS 5 sql sql-server decimal
declare @nr1 decimal(20,19),
@nr2 decimal(20,19)
set @nr1 = EXP(1.0)
set @nr2 = PI();
print @nr1/@nr2
Run Code Online (Sandbox Code Playgroud)
由于EXP和PI是"无限"数字,因此您应该始终有足够的小数来打印
此查询的结果是 0.865255979432265082
对于查询:
declare @nr12 decimal(34,25),
@nr22 decimal(34,25)
set @nr12 = EXP(1.0)
set @nr22 = PI();
print @nr12/@nr22
Run Code Online (Sandbox Code Playgroud)
我得到了结果: 0.865255
所以我的问题是,为什么第一个查询比第二个查询更精确?正如decimal(p,s)在msdn中定义的那样,告诉我第二个查询应该更精确.
此链接将有所帮助:http://msdn.microsoft.com/en-us/library/ms190476.aspx
据此,除法 e1/e2 的结果的范围将由以下公式 max(6, s1 + p2 + 1) 给出,并且还包括以下注释:
考虑到 exp() 和 pi() 的小数位数在这两种情况下都是 16,您可能会更好地使用decimal(19,16)。
| 归档时间: |
|
| 查看次数: |
5291 次 |
| 最近记录: |