首页 > 解决方案 > 将变量放入方程中会对其值进行四舍五入

问题描述

我有 2 个DECIMAL(17,5)变量可以产生准确的计算。当他们点击表达式时,他们会不断四舍五入他们的值。

使用观察名单,我推断出这么多:

@TotalAmount = 62.30000
@ConversionValue = 0.74630

然而

SELECT @TotalAmount * @ConversionValue

当它应该返回 46.49449 时返回 62

CAST(@TotalAmount AS decimal(17,5)) returns 62.00000
CAST(@ConversionValue AS decimal(17,5)) returns 1.00000

SELECT @TotalAmount returns 62.00000
SELECT @ConversionValue returns 1.00000

标签: sqlsql-serverexpressiondecimal

解决方案


我假设您使用的是 SQL Server 而不是 postgres 或 mySQL,在这里您使用了 SSMS 标签)。

如果是这种情况,我会在您的变量声明中明确且“过于”精确。另请注意,如果原始变量不正确,您可以在内存中获得“更多”精度,这些精度将被截断。这里有一个类似的帖子:

SQL Server 十进制变量赋值?

declare @A decimal(18, 3);
declare @B decimal(18, 3);
declare @C decimal(18, 3);

set @A = 4;
set @B = 9;
set @C = @A/@B 

select @A/@B -- 0.44444444444444444444
select @C    -- 0.444

推荐阅读