sql - 将变量放入方程中会对其值进行四舍五入
问题描述
我有 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
解决方案
我假设您使用的是 SQL Server 而不是 postgres 或 mySQL,在这里您使用了 SSMS 标签)。
如果是这种情况,我会在您的变量声明中明确且“过于”精确。另请注意,如果原始变量不正确,您可以在内存中获得“更多”精度,这些精度将被截断。这里有一个类似的帖子:
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
推荐阅读
- python - 熊猫数据框从元素频率大于1的列创建唯一ID
- windows - 排序对象对 Get-EventLog 没有影响
- python - mpi 插槽不可用
- node.js - 如何处理运行时间超过 cron 间隔的 pm2 cron 作业?
- python - Pandas str.contains 超过一个列表?
- maven - 如何在提交/拉取请求后更新 maven 包
- haskell - 使用“否则”时如何获得“非详尽模式”异常
- mongodb - 使用 Java 驱动程序 3.8 的 ColdFusion 和 MongoDB 4
- python - 在 GMSH 物理线获取 FaceVariable
- jmeter - 当服务器总是返回 200 时,JMeter 中的真正错误是什么?