【发布时间】:2021-05-14 05:00:22
【问题描述】:
我有一条sql语句:
Declare @res numeric(30,10)
Declare @num1 numeric(30,10) = 233.6108200000
Declare @num2 numeric(30,10) = 200000.0000000000
Declare @num3 numeric(30,10) = 0.8341
set @res = ((@num1/@num2) * 10000 * @num3)
select @res
o/p : 9.7427050000
但如果我尝试转换,则在 ssrs 表达式中:
=CDec((233.6108200000/200000.0000000000) * 10000 * 0.8341)
o/p : 9.74273925
编辑 我需要对 ssrs 表达式/文本框属性进行哪些更改以匹配 sql server 结果?
【问题讨论】:
-
SSRS 没有比例和精度。如果您需要使用明确的比例和精度,则需要使用 SSRS 表达式以外的其他内容。
-
或者文本框属性有什么变化?
-
更改显示的格式不会增加丢失的比例。使用
#,0.00000格式化的1.235将是1.23500它不会“返回”已经丢失的数字。 -
简单的答案就在那里,浮点数学正在发生。我怀疑在第二个。浮点数学将数字存储为近似值而不是准确值。我会尝试将第二个版本中的数字转换为数字类型,就像你在第一个版本中所做的一样,看看是否可以解决它。如果没有,请继续查找,直到找到浮动发生的位置并在两个查询中消除它们。
-
@Larnu : 好的,那么解决办法是什么?
标签: sql sql-server reporting-services ssrs-2008 ssrs-2012