2014-09-02 45 views
1

我們正在使用jasper報告。Jasper報告十進制格式,零值爲null

而對於場在報告中,我們已經設置的公式,如果像場RATE1的值是空值,則顯示之一的「 - 」報告否則格式rate1值如## 0.0000。 ?

$ F {}率1新的DecimalFormat( 「## 0.0000」)格式(新 的BigDecimal( 「」 + $ F {}率1)): 「 - 」

但如果rate1的值爲0,那麼它也是顯示「 - 」而不是0.0000 什麼可以是問題?

回答

0

您需要將其更改爲以下內容。

$F{rate1} != null ? new DecimalFormat("##0.0000").format(new BigDecimal(""+$F{rate1})):"-" 

解釋一下,我沒有在JasperReports中檢查過,也沒有設置馬上測試。 但是在C中,零被認爲是假的,而非零值被認爲是真的。

某處當報告正在被解析和執行時,可能會發生,這可能是情況發生。你最好向社區證實這一點。

+0

Java沒有從int(或String)自動轉換爲布爾值,所以在問題中提供的普通java語法是非法的。但是,由於它顯然有點作用,我也傾向於相信這種改變會使它變得更好。 – Deltharis 2014-09-02 09:10:45

+0

我同意。但可能是碧玉**可能會**直接評估表達式之前做內部事情,這就是爲什麼我要求他與社區進行覈對。因爲我最後的體驗是4.5.1,而它們是5.6.0,所以事情可能已經改變了。 無論如何,在給定的格式表達是錯誤的。 :) – 2014-09-02 09:13:29

+0

這可能是提問者在Groovy而不是Java中編寫他的表達式。這是自JasperReports 0.6.6以來的可能,並且會解釋自動類型轉換。 – GenericJon 2014-09-02 11:55:58