Crystal reports Crystal Reports-禁用默认舍入/显示所有小数

Crystal reports Crystal Reports-禁用默认舍入/显示所有小数,crystal-reports,decimal,crystal-reports-xi,Crystal Reports,Decimal,Crystal Reports Xi,如果我创建一个仅包含1/1000的公式字段a,然后将其拖出到报告中,它将显示“0,00”,因为默认小数数设置为1.00,对于类型为的字段,默认舍入设置为0.01。 没问题。 调整小数和舍入后,将显示0001 当我创建仅包含{@A}的公式字段B并增加小数和四舍五入时,它将显示为“000100000000” 但是如果我使用A来创建一个文本,totext({@A})+“test”,结果将是“0,00 test”,我无法找到一种方法来显示正确的“0001 test”,而不添加totext({@A},3)

如果我创建一个仅包含1/1000的公式字段a,然后将其拖出到报告中,它将显示“0,00”,因为默认小数数设置为1.00,对于类型为的字段,默认舍入设置为0.01。 没问题。 调整小数和舍入后,将显示0001

当我创建仅包含{@A}的公式字段B并增加小数和四舍五入时,它将显示为“000100000000”

但是如果我使用A来创建一个文本,totext({@A})+“test”,结果将是“0,00 test”,我无法找到一种方法来显示正确的“0001 test”,而不添加totext({@A},3)。我不想使用舍入,因为A中的小数位数不同,我不想在末尾显示任何零

我确实修改了这段代码(可用于数字字段小数的条件格式):

这是可行的,但我希望我不需要那么多额外的代码,我的Crystal Reports中已经有性能问题,我不希望有增加这些问题的风险

我只想使用{@A}中的实际值,不管小数位数是多少。 我想这可能是由于两种默认舍入设置都是默认的小数数 现在我意识到这可能是因为默认的小数位数,而不是四舍五入

如果我将A更改为(1/1000)*6,它将显示为0,01未格式化,B将显示“000600000测试”。所以这是一个取整问题。

  • 将所需公式的输出保留为数字
  • 在公式上单击鼠标右键,然后选择“格式字段”
  • 在“数字”选项卡中,选择“自定义样式”,然后单击“自定义”
  • 对于舍入选项,选择0.0000000001
  • 单击小数选项旁边的X-2并输入此公式
局部数a; 局部数b

for a := 1 to 10 do
(
if mid(strreverse(totext(CurrentFieldValue,10)),a,1) <> "0" then 
    (b := a;
    a := 10);
);
11- b
对于a:=1到10 do
(
如果mid(strreverse(totext(CurrentFieldValue,10)),a,1)“0”,则
(b:=a;
a:=10);
);
11-b

我发现默认舍入由您的系统区域设置定义。如果您将小数位数从2(通常)增加到8,您的所有问题都会得到解决。

我不明白为什么代码粘贴不正确,而是本地数字a;局部数b;应该是公式的前两行,这是与上面的条件格式示例非常相似的解决方案。我希望通过某种设置,强制Crystal Reports在公式字段中使用实际值
If {@A}= Int{@A} Then totext({@A},0)
Else If {@A}* 10 = Int{@A}* 10) Then totext({@A},1)
...
for a := 1 to 10 do
(
if mid(strreverse(totext(CurrentFieldValue,10)),a,1) <> "0" then 
    (b := a;
    a := 10);
);
11- b