当我在SQL Server2005/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发布于 2010-01-11 00:23:55
这是由于精确表示和舍入误差造成的。
这个问题是由于
SELECT @a*@b --(=2345.123457)请在SO中搜索多个示例。
https://stackoverflow.com/questions/2037598
复制相似问题