Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SQL舍入结果为5位小数,我要完整的结果_Sql_Sql Server_Math - Fatal编程技术网

SQL舍入结果为5位小数,我要完整的结果

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

我不是这方面的数学专家或SQL专家(Microsoft SQL Server 2017),所以我不知道为什么会发生这种情况

所以我的查询是作为FJS的
((100000000*0.00002*POWER(10,(82.6/20)))/100000000)

现在由于某种原因,结果是0.2697800000000.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非常感谢,真是太棒了!请回答,这样我才能把它标记为正确