jasper小数分隔符被忽略

时间:2015-04-14 07:00:26

标签: jasper-reports format double

在jasper报告中,我使用JSON数据源。 该数据源包含数字(例如159.994)。

有一个类java.lang.double的字段(我们称之为“doubleField”)和一个带有此字段和模式("#,##0.00 ¤ (brutto)")的文本字段。 该模式工作正常(德国货币格式),但如果我打印出doubleField的值,预期输出将是“195,99”或“159.994”。 但实际上它是"159.994,00""159994.0"

有一个解决方案将报告的语言从“groovy”改为“JavaScript”,但这没有用,也不适用。

有一个“快速和肮脏”的解决方案(没有快速)只是将JSON值作为String,然后将其转换为文本字段中的double。这样可以正常工作,但它很脏而且不是很快。

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

我有一个Jasper报告定义。我只是从报告定义中加入了一些我认为可能与您的问题相关的内容。

首先,我有几个字段定义。以下是其中两个:

<field name="FundFixedBeginningBalance" class="java.lang.Double">
    <fieldDescription>
        <![CDATA[FundFixedBeginningBalance/FundFixedBeginningBalanceValue]]>
    </fieldDescription>
</field>
<field name="FundNonFixedBeginningBalance" class="java.lang.Double">
    <fieldDescription>
        <![CDATA[FundNonFixedBeginningBalance/FundNonFixedBeginningBalanceValue]]>
    </fieldDescription>
</field>

注意两者是如何用class="java.lang.Double"定义的。我正在使用XPath表达式,因为我的数据是XML格式,但这与JSON没有根本的不同。稍后,在报告布局部分中我有:

    <textField pattern="#,##0.00 ;(#,##0.00)" isBlankWhenNull="true">
        <reportElement positionType="Float" x="368" y="52" width="100" height="14" uuid="deac984d-39b8-49f4-b4d2-28e66681c098">
            <property name="local_mesure_unitx" value="pixel"/>
            <property name="com.jaspersoft.studio.unit.x" value="px"/>
        </reportElement>
        <textElement textAlignment="Right"/>
        <textFieldExpression><![CDATA[$F{FundFixedBeginningBalance} + $F{FundNonFixedBeginningBalance}]]></textFieldExpression>
    </textField>

注意textFieldExpression元素中没有强制转换;只需用$F替换这两个字段并将它们加在一起(这样就可以正确打印)。你在做些不同的事吗?