SQL舍入结果为5位小数,我要完整的结果
我不是这方面的数学专家或SQL专家(Microsoft SQL Server 2017),所以我不知道为什么会发生这种情况 所以我的查询是作为FJS的SQL舍入结果为5位小数,我要完整的结果,sql,sql-server,math,Sql,Sql Server,Math,我不是这方面的数学专家或SQL专家(Microsoft SQL Server 2017),所以我不知道为什么会发生这种情况 所以我的查询是作为FJS的((100000000*0.00002*POWER(10,(82.6/20)))/100000000) 现在由于某种原因,结果是0.269780000000或0.26978,但当我将完全相同的查询放入计算器或谷歌时,结果是0.26979257651 我在谷歌输入的金额是 (100000000*0.00002*(10^(82.6/20))/10000
((100000000*0.00002*POWER(10,(82.6/20)))/100000000)
现在由于某种原因,结果是0.269780000000或0.26978,但当我将完全相同的查询放入计算器或谷歌时,结果是0.26979257651
我在谷歌输入的金额是
(100000000*0.00002*(10^(82.6/20))/100000000
或
任何帮助或建议都将不胜感激。问题在于功率(10,(82.6/20))
的结果是13489
,这与精确值相差甚远。这是因为POWER
返回其输入的类型,在本例中为INT
。这并不是特别有帮助,但它是[1]
解决方法是将第一个参数设为浮点
,这将使表达式的其余部分也保持一致。要做到这一点,最简单的方法是在e
上加一个钉子,这样:
SELECT ((1000000000*0.00002 * POWER(10e, (82.6 / 20))) / 1000000000)
给出0.269792576518331
。如果您愿意,CAST(10为浮点)
也可以。使用10.0
是不行的,因为这个文本的类型是DECIMAL(3,1)
,而POWER(10.0,(82.6/20))
是13489.6
,这并不比我们开始使用的好多少
[1] :然而,如果输入类型为:在我的测试中,传入任何精度的十进制
将导致精度为38的十进制
,那么文档中说输出类型为十进制(2,0)
是错误的。还有其他异常情况。我已经提交了一个请求来纠正这个问题。问题是POWER(10,(82.6/20))
的结果是13489
,这与精确值相差很远。这是因为POWER
返回其输入的类型,在本例中为INT
。这并不是特别有帮助,但它是[1]
解决方法是将第一个参数设为浮点
,这将使表达式的其余部分也保持一致。要做到这一点,最简单的方法是在e
上加一个钉子,这样:
SELECT ((1000000000*0.00002 * POWER(10e, (82.6 / 20))) / 1000000000)
给出0.269792576518331
。如果您愿意,CAST(10为浮点)
也可以。使用10.0
是不行的,因为这个文本的类型是DECIMAL(3,1)
,而POWER(10.0,(82.6/20))
是13489.6
,这并不比我们开始使用的好多少
[1] :然而,如果输入类型为:在我的测试中,传入任何精度的十进制
将导致精度为38的十进制
,那么文档中说输出类型为十进制(2,0)
是错误的。还有其他异常情况。我已经提交了一个pull请求来更正此问题。POWER
的第一个参数是INT
文本,因此结果也是INT
。将10
更改为10e
,使其成为浮点值
。在输入精度有限时获得过于精确的结果并不会使更精确的结果更“精确”。您的任何输入中只有大约5位精度。为什么你认为0.26979257651比0.26978更“正确”?100000000*0.00002*POWER(10,82.6/20)=269780000.00000
0.26978正确result@Jeroen非常感谢,真是太棒了!请回答,以便我可以将其标记为正确。您的POWER
的第一个参数是INT
文本,因此结果也是INT
。将10
更改为10e
,使其成为浮点值
。在输入精度有限时获得过于精确的结果并不会使更精确的结果更“精确”。您的任何输入中只有大约5位精度。为什么你认为0.26979257651比0.26978更“正确”?100000000*0.00002*POWER(10,82.6/20)=269780000.00000
0.26978正确result@Jeroen非常感谢,真是太棒了!请回答,这样我才能把它标记为正确