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

时间:2018-10-31 08:39:20

标签: sql sql-server math

我既不是数学专家也不是SQL专家(Microsoft SQL Server 2017),所以我不知道为什么会这样。

所以我的查询是((1000000000*0.00002 * POWER(10, (82.6 / 20))) / 1000000000) AS FJS

现在由于某种原因,结果为 0.2697800000000000 0.26978 ,但是当我将完全相同的查询放入计算器或Google时,结果为 0.26979257651 我在Google中投入的金额是

(1000000000*0.00002*(10^(82.6/20)))/1000000000

use this link

任何帮助或建议将不胜感激。

1 个答案:

答案 0 :(得分:4)

问题在于POWER(10, (82.6 / 20))的结果是13489,与精确值相差很远。这是因为POWER返回其输入的类型,在这种情况下为INT。这不是特别有用,但是 documented [1]

解决方法是使第一个参数为FLOAT,这也使表达式的其余部分也保持一致。最简单的方法是使用e,所以:

SELECT ((1000000000*0.00002 * POWER(10e, (82.6 / 20))) / 1000000000)

给出0.269792576518331。如果您愿意,CAST(10 AS FLOAT)也可以。使用10.0不会 这样做,因为此文字的类型为DECIMAL(3,1),而POWER(10.0, (82.6/20))13489.6,这并不比我们做的好开始。


[1]:但是,如果输入类型为:在我的测试中,传递任何精度的DECIMAL(2,0)会导致输入错误,则文档说输出类型为DECIMAL时是错误的。 DECIMAL的精度为38,而不是原始精度。还有其他异常。我已提交拉动请求以更正此问题。