這篇文章主要為大家展示了Java POI讀取excel中數(shù)值精度損失怎么辦,內(nèi)容簡(jiǎn)而易懂,希望大家可以學(xué)習(xí)一下,學(xué)習(xí)完之后肯定會(huì)有收獲的,下面讓小編帶大家一起來(lái)看看吧。
成都網(wǎng)站建設(shè)哪家好,找創(chuàng)新互聯(lián)!專(zhuān)注于網(wǎng)頁(yè)設(shè)計(jì)、重慶網(wǎng)站建設(shè)、微信開(kāi)發(fā)、微信小程序開(kāi)發(fā)、集團(tuán)成都定制網(wǎng)頁(yè)設(shè)計(jì)等服務(wù)項(xiàng)目。核心團(tuán)隊(duì)均擁有互聯(lián)網(wǎng)行業(yè)多年經(jīng)驗(yàn),服務(wù)眾多知名企業(yè)客戶(hù);涵蓋的客戶(hù)類(lèi)型包括:混凝土攪拌機(jī)等眾多領(lǐng)域,積累了大量豐富的經(jīng)驗(yàn),同時(shí)也獲得了客戶(hù)的一致贊許!
描述:
excel 單元格中,純數(shù)字的單元格,讀取后 后面會(huì)加上 .0 。
例如: 1 --> 1.0
而使用下面的方法,可能會(huì)對(duì)小數(shù)存在精度損失
cell.setCellType(CellType.STRING); //讀取前將單元格設(shè)置為文本類(lèi)型讀取
例如: 2.2 --> 2.1999999997
目前的解決辦法:
一. 將excel單元格改為文本類(lèi)型
注意,直接修改單元格屬性不管用, 使用 分列 的方式,可以實(shí)現(xiàn)將數(shù)值改為文本類(lèi)型。
二. java處理
public class CommonUtil { private static NumberFormat numberFormat = NumberFormat.getNumberInstance(); static { numberFormat.setGroupingUsed(false); } public static String getCellValue(Cell cell) { if (null == cell) { return ""; } Object value; switch (cell.getCellTypeEnum()) { // 省略 case NUMERIC: double d = cell.getNumericCellValue(); value = numberFormat.format(d); // 關(guān)鍵在這里! //省略 } return value == null ? "" : value.toString(); } }
上面的方法可以獲取一個(gè)正確的數(shù)值.
以上就是關(guān)于Java POI讀取excel中數(shù)值精度損失怎么辦的內(nèi)容,如果你們有學(xué)習(xí)到知識(shí)或者技能,可以把它分享出去讓更多的人看到。