【发布时间】:2015-07-28 12:33:37
【问题描述】:
如果我创建一个仅包含 1/1000 的公式字段 A,然后将其拖到报表中,它将显示“0,00”,因为默认小数位数设置为 1.00,默认舍入设置为 0.01类型为 Number 的字段。 没问题。 调整小数和四舍五入后,将显示 0,001。
当我创建仅包含 {@A} 的公式字段 B 并增加小数并四舍五入时,它将显示为“0,001000000000”。
但是如果我使用 A 创建一个文本,totext({@A}) + 'test',结果将是“0,00 test”,我想不出一种方法来显示正确的“0,001 test” " 不添加 totext({@A},3)。我不想使用四舍五入,因为 A 中的小数位数会有所不同,而且我不想在末尾显示任何零。
我确实修改了这段代码(可用于数字字段的小数条件格式):
If CurrentFieldValue = Int(CurrentFieldValue) Then 0
Else If CurrentFieldValue * 10 = Int(CurrentFieldValue * 10) Then 1
Else If CurrentFieldValue * 100 = Int(CurrentFieldValue * 100) Then 2
Else If CurrentFieldValue * 1000 = Int(CurrentFieldValue * 1000) Then 3
Else If CurrentFieldValue * 10000 = Int(CurrentFieldValue * 10000) Then 4
Else DefaultAttribute
到
If {@A}= Int{@A} Then totext({@A},0)
Else If {@A}* 10 = Int{@A}* 10) Then totext({@A},1)
...
它可以工作,但我希望我不需要所有额外的代码,我的 Crystal Reports 中已经存在性能问题,我不想冒险添加。
无论小数位数如何,我只想使用 {@A} 中的实际值。 我猜这可能是由默认舍入设置作为默认小数位数引起的 现在我意识到这可能是由默认小数位数引起的,而不是四舍五入。
如果我将 A 更改为 (1/1000)*6,它将显示为 0,01 未格式化,B 将显示“0,00600000 test”。所以这是一个四舍五入的问题。
【问题讨论】:
标签: crystal-reports decimal crystal-reports-xi