Java 使用Jasper将Double格式设置为coma后带有两个数字的字符串

Java 使用Jasper将Double格式设置为coma后带有两个数字的字符串,java,jasper-reports,Java,Jasper Reports,我有一个jrxml文件,其中有两个双精度值,希望格式化为coma后面有两个数字的字符串,所以这里是我的字段 <field name="montantRachat" class="java.lang.Double"> <fieldDescription><![CDATA[montantRachat]]></fieldDescription> </field> <variable name="total" class=

我有一个jrxml文件,其中有两个双精度值,希望格式化为coma后面有两个数字的字符串,所以这里是我的字段

<field name="montantRachat" class="java.lang.Double">
        <fieldDescription><![CDATA[montantRachat]]></fieldDescription>
</field>
<variable name="total" class="java.lang.Double" calculation="Sum">
        <variableExpression><![CDATA[$F{montantRachat}]]></variableExpression>
        <initialValueExpression><![CDATA[new Double(0)]]></initialValueExpression>
</variable>

我遗漏了什么吗?

这里有一个更简单的方法。您可以创建一个
文本字段
,并将其模式设置为
,###0.00#
,而不是创建另一个类型为
字符串
变量



您是否尝试将报表的语言设置为java?这里还有另一个解决方案,适用于那些仍然想使用DecimalFormat
新DecimalFormat(“#,#,#,#0.00”).format($V{total}.doubleValue()).toString()
<variable name="totalString" class="java.lang.String">
        <variableExpression><![CDATA[(new DecimalFormat("#,###,##0.00")).format($V{total})]]></variableExpression>
</variable>
<variable name="montantRachatString" class="java.lang.String">
        <variableExpression><![CDATA[(new DecimalFormat("#,###,##0.00")).format($F{montantRachat})]]></variableExpression>
</variable>
net.sf.jasperreports.engine.JRException: net.sf.jasperreports.engine.fill.JRExpressionEvalException: Error evaluating expression : 
    Source text : (new DecimalFormat("#,###,##0.00")).format($V{total})

    at com.jaspersoft.studio.editor.preview.view.control.ReportControler.fillReport(ReportControler.java:466)

    at com.jaspersoft.studio.editor.preview.view.control.ReportControler.access$18(ReportControler.java:441)

    at com.jaspersoft.studio.editor.preview.view.control.ReportControler$4.run(ReportControler.java:333)

    at org.eclipse.core.internal.jobs.Worker.run(Worker.java:54)

Caused by: net.sf.jasperreports.engine.fill.JRExpressionEvalException: Error evaluating expression : 
    Source text : (new DecimalFormat("#,###,##0.00")).format($V{total})

    at net.sf.jasperreports.engine.fill.JREvaluator.evaluateEstimated(JREvaluator.java:327)

    at net.sf.jasperreports.engine.fill.JRCalculator.evaluateEstimated(JRCalculator.java:602)

    at net.sf.jasperreports.engine.fill.JRCalculator.estimateVariables(JRCalculator.java:201)

    at net.sf.jasperreports.engine.fill.JRFillDataset.next(JRFillDataset.java:1261)

    at net.sf.jasperreports.engine.fill.JRFillDataset.next(JRFillDataset.java:1235)

    at net.sf.jasperreports.engine.fill.JRBaseFiller.next(JRBaseFiller.java:1614)

    at net.sf.jasperreports.engine.fill.JRVerticalFiller.fillReport(JRVerticalFiller.java:150)

    at net.sf.jasperreports.engine.fill.JRBaseFiller.fill(JRBaseFiller.java:963)

    at net.sf.jasperreports.engine.fill.BaseFillHandle$ReportFiller.run(BaseFillHandle.java:120)

    at java.lang.Thread.run(Unknown Source)

Caused by: java.lang.IllegalArgumentException

    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)

    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)

    at java.lang.reflect.Method.invoke(Unknown Source)

    at org.codehaus.groovy.runtime.callsite.PojoMetaMethodSite$PojoCachedMethodSite.invoke(PojoMetaMethodSite.java:189)

    at org.codehaus.groovy.runtime.callsite.PojoMetaMethodSite.call(PojoMetaMethodSite.java:53)

    at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:45)

    at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:108)

    at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:116)

    at ORV45rapport45pdf_subreport_1490866646896_381083.evaluateEstimated(calculator_ORV45rapport45pdf_subreport_1490866646896_381083:355)

    at net.sf.jasperreports.engine.fill.JREvaluator.evaluateEstimated(JREvaluator.java:314)

    ... 9 more
<textField pattern="#,##0.00#">
    <reportElement x="455" y="0" width="100" height="30"/>
    <textFieldExpression><![CDATA[$V{total}]]></textFieldExpression>
</textField>