excel導入BigDecimal值精度問題


項目中導入功能使用組件為easyexcel,導入有個字段是數值類型的,后台使用BigDecimal類型。

測試提bug該字段值變了,經查是easyexcel版本原因導致的,項目中使用的是2.1.7版本,網上說升級成2.2.6以上就好了,項目中升級成最新版本2.2.10了。

 

 

結果小數位超過6位,有的值被取整了(測試數據為999.99999999),有的被截取了(測試數據999.999999999)。測試數據小數位3-6位的值沒有發生改變。等於好了一半,還有一半不行。debug測試發現讀取excel的時候就已經是這樣了。后來想起excel單元格設置,將該列設置為文本格式,再次導入測試發現數據都正常了。

 

 

 

 String patternConversionRatio = "^\\d{1,4}(\\.\\d{1,6})?$";
            if (NumberUtils.isCreatable(conversionRatio)) {
                flag = checkValueNotNull(conversionRatio, "轉換比", flag, sb);
                if (StringUtils.isNotBlank(conversionRatio)) {
                    flag = checkValueLength(conversionRatio, "轉換比", 64, flag, sb);
                    flag = checkValuePattern(conversionRatio, "轉換比大於0,支持小數(最多6位),最大輸入小於10000", flag, sb, patternConversionRatio);
                }
                modle.setConversionRatio(new BigDecimal(conversionRatio).toString());
            } else {
                flag = false;
                sb.append("轉換比不是數字;");
            }
 @ExcelProperty(value = "轉換比")
    private String conversionRatio;

解析excel的實體類,接值時用的String。存入數據庫時的實體類才轉換為BigDecimal。網上說版本升級就行,其實還有導入模板列設置為:文本,2個地方都要改。

下面是導入后返回的文件,數據精度沒有改變。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM