SQL Server:为什么Float比Decimal更准确

时间:2016-07-30 01:48:14

标签: sql sql-server types decimal floating-accuracy

This post包含以下代码:

DECLARE @A DECIMAL(3, 0), @B DECIMAL(18, 0), @F FLOAT

SET @A = 3
SET @B = 3
SET @F = 3

SELECT 1 / @A * 3.0, 1 / @B * 3.0, 1 / @F * 3.0
SELECT 1 / @A * 3  , 1 / @B * 3  , 1 / @F * 3 

使用float,表达式求值为1.使用Decimal,表达式求值为小数点后的9s的一些集合。在这种情况下,为什么浮点数会产生更准确的答案?我认为每个Difference between numeric, float and decimal in SQL ServerUse Float or Decimal for Accounting Application Dollar Amount?

的十进制更精确/准确

1 个答案:

答案 0 :(得分:3)

您声明的十进制值是固定宽度,小数点后面没有点。这会影响计算。

SQL Server有一个相当复杂的公式,用于计算包含十进制数的算术表达式的精度。详细信息位于documentation。您还需要考虑数字常量是十进制格式,而不是数字。

此外,最后,您需要使用所需的精度转换回十进制格式。在这种情况下,您可能会发现floatdecimal是等效的。