在 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 以获取多个示例。]
相关:Sql Server Decimal(30,10) losing last 2 decimals
关于tsql - SQL 乘法差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2037598/