tsql - SQL 乘法差异

标签 tsql

在 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/

相关文章:

tsql - T-SQL 中的不等式测试

sql - 内连接 vs 内连接

sql - 如何检查 SQL Server 中的重复记录

asp.net - 在 T-SQL 中将多行字段连接成一列

c# - 我如何在 SQL 中使用枚举而不在我的 SQL 脚本/过程中硬编码魔数(Magic Number)?

sql-server - 如何在存储过程中循环遍历表?

sql - 同一个临时表上的 T-SQL If Else 条件

tsql - 过滤连接表中计数为 X 或至少为 X 或最多为 X 的 ID 的最佳 T-SQL 语法是什么?

sql - T-SQL : Best way to replace NULL with most recent non-null value?

sql - 按子字符串计算 SQL Server 中的行数