天天看點

java 四舍六入五成雙_顯示格式的四舍六入五成雙

一、問題描述

在使用快逸複雜報表設計" target="_blank" class="quieeLink1">設計器時,若單元格内的資訊為數值,可能需要使用單元格的”顯示格式”這個屬性來對資料進行相應位數的舍入。由于該功能使用了java中的java.text.DecimalFormat這個類(使用了歐美金融業界常用的四舍六入無成雙的規則)來實作相關的需求。其中有個陷阱(四舍六入無成雙并不是bug)需要提醒使用該屬性的使用者。

二、解決思路

在使用顯示格式的時候,同時去使用快逸的自帶函數round()來将”四舍六入”變為”四舍五入”。

三、實作步驟

打開一張空白報表,在任意單元格中,本例使用A1單元格,輸入4.45,并将其顯示格式設定為#.#,可以看到預覽結果為4.4,而非我們傳統觀念中的四舍五入後的結果:4.5。

java 四舍六入五成雙_顯示格式的四舍六入五成雙
java 四舍六入五成雙_顯示格式的四舍六入五成雙

這是因為顯示格式該功能的實作使用了java.text.DecimalFormat,而java.text.DecimalFormat在設計的時候使用了”四舍六入五成雙”的觀念。若要使用四舍五入可以在單元格中使用round函數:=round(4.45,1),再次預覽結果,發現結果變為4.5。

java 四舍六入五成雙_顯示格式的四舍六入五成雙
java 四舍六入五成雙_顯示格式的四舍六入五成雙

四、結尾總結

在使用快逸報表設計器V4版本時,需要注意單元格屬性中的顯示格式對數值的舍入并非是”四舍五入”,而是”四舍六入五成雙”的規則。若忽視這點,會對終端的客戶帶來不便或是一些不必要的麻煩。