【发布时间】:2019-03-15 06:15:35
【问题描述】:
我遇到了一些在 SQL Server 2016 Enterprise 中执行的数学运算。
我需要计算这个表达式:
(4.384 / 4.2989 * 100) * 98.8251017928029 / 100
在 SQL 中我得到结果 100.78141988869389772850690000
但是当我在 MS Excel 中计算这个表达式时,我得到:100.7814199585120000
由于这些结果是消费者价格指数,因此小数点后的数字很重要。
那么,我的问题是,哪个结果是正确的? SQL Server 或 Excel。
PS。我已经更新了我的问题。 这里是dbfiddle
谢谢。
【问题讨论】:
-
由于浮点计算,Excel 有 15 位有效数字限制。互联网上有很多内容可供阅读。
-
那么,如果我将所有小数转换为浮点数,我应该会收到与 Excel 中相同的结果吗?
-
要在 MS SQL 中锁定 15 位有效数字的结果,您可能应该使用 Decimal 或 Numeric 来指定精度和小数位数。
-
众所周知,SQL Server 中的
FLOAT容易出现舍入错误 - 如果您想要精确计算,请改用DECIMAL(p,s) -
我有,我在我的sql表达式中使用小数,但结果与excel不同。
标签: sql sql-server excel decimal sql-server-2016