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 Server和Use Float or Decimal for Accounting Application Dollar Amount?
的十进制更精确/准确答案 0 :(得分:3)
您声明的十进制值是固定宽度,小数点后面没有点。这会影响计算。
SQL Server有一个相当复杂的公式,用于计算包含十进制数的算术表达式的精度。详细信息位于documentation。您还需要考虑数字常量是十进制格式,而不是数字。
此外,最后,您需要使用所需的精度转换回十进制格式。在这种情况下,您可能会发现float
和decimal
是等效的。