Actuate 中的舍入数字

Rounding Numbers in Actuate

使用 Actuate eReport Designer Professional 9 SErvice Pack 3 Fix 2

我正在尝试设置文本控件的 ValueExp 属性 以显示由与一些静态文本连接的除法结果组成的字符串。如果没有余数,我希望除法结果显示为整数。否则,我只想要一位小数。

会涉及条件逻辑,但我能够处理。我真正想要的是,仅使用 Expression Builder,我能否格式化数字。例如,我如何让表达式 5/3 & " text" 显示为 1.7 text?这个猜测,

 round(5/3, 1) & " text"

为 "illegal variable use (round)" 和 "operator not found for these types"

抛出错误

根据 Dominique 的回答,这项工作:

BirtMath.round(5/3, 1)

导致在 BirtMath 上使用非法变量。

试试这个:

BirtMath.round(5/3, 1) + " text"

(在 BIRT Eclipse designer 上测试,这应该与 actuate professional designer 相同)

最终完成任务的是:

Format(5/3, "##.#") & " text"

Dominique的回答提到了BIRT,这是完全不同的technology/product。

如果要显示具有特殊格式的数值,文本控件不是这里的最佳选择。相反,您应该使用适当类型的数字控件(例如,Double 控件)并覆盖该控件的 GetText() 方法来处理显示格式或使用条件格式。这是一个更好的解决方案的原因是数据搜索和导出将无法与文本控件一起正常工作。

请注意,您可以使用这样的格式模式:“#,##0 \T\e\x\t”而不是连接字符串;使用条件格式时需要此技术。

就我个人而言,我更希望您使用条件格式,因为我在设计 e.Reports 的该功能时付出了很多努力,并且我希望看到更多人使用它。 :) 但在您的特定情况下覆盖 GetText() 可能更容易,因为需要进行更复杂的字符串操作以消除尾随小数。

我想补充一点,使用 BIRT,您还可以以更 'graphic' 的方式格式化文本,而不需要 SQL ...以防对某人有用... .

Select对象-属性-格式数字-格式你选

除了添加自定义格式外,每种情况都有不同。

当然,如何排版文本是每个人的决定,知道如何以不同的方式完成总是好的!