在SQL Server 2005/2008上乘以DECIMAL数字时,我偶然发现了这种奇怪的现象.谁能解释一下效果呢?
DECLARE @a DECIMAL(38,20)
DECLARE @b DECIMAL(38,20)
DECLARE @c DECIMAL(38,20)
SELECT @a=1.0,
@b=2345.123456789012345678,
@c=23456789012345.999999999999999999
SELECT CASE WHEN @a*@b*@c = @c*@b*@a
THEN 'Product is the same'
ELSE 'Product differs'
END
最佳答案 这是由于精确表示和舍入误差.
问题是由于
SELECT @a*@b --(=2345.123457)
[请搜索SO以获取多个示例.]