java操作Excel处理数字类型的精度损失问题验证:

场景:

CELL_TYPE_NUMERIC-->CELL_TYPE_STRING--->CELL_TYPE_NUMERIC

POI版本:
poi-3.10.1
poi-3.9

Code:

package poi;

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream; import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.usermodel.Workbook; public class DoubleWithStringNumeric { private static final String excelName="DoubleWithStringNumberic.xls";
public static void main(String[] args) throws IOException {
int double_idx=0;
int double2String_idx=1;
int string2double_idx=2;
Workbook wb=new HSSFWorkbook();
Sheet sheet=wb.createSheet("DoubleWithStringNumberic");
Row row=sheet.createRow(1);
Cell cell=row.createCell(double_idx);
cell.setCellType(Cell.CELL_TYPE_NUMERIC);
cell.setCellValue(99.333333); persistWorkbook(wb); travelSheet(); System.out.println("Type: CELL_TYPE_NUMERIC==>CELL_TYPE_STRING");
InputStream s=new FileInputStream(excelName);
wb=new HSSFWorkbook(s);
sheet=wb.getSheetAt(0);
row=sheet.getRow(1);
cell=row.getCell(0);
Double d=cell.getNumericCellValue(); cell=row.createCell(double2String_idx);
cell.setCellType(Cell.CELL_TYPE_STRING);
cell.setCellValue(String.valueOf(d)); persistWorkbook(wb);
s.close(); travelSheet(); System.out.println("Type: CELL_TYPE_STRING==>CELL_TYPE_NUMERIC");
s=new FileInputStream(excelName);
wb=new HSSFWorkbook(s);
sheet=wb.getSheetAt(0);
row=sheet.getRow(1);
cell=row.getCell(double2String_idx);
String double2String=cell.getStringCellValue();
cell=row.createCell(string2double_idx);
cell.setCellType(Cell.CELL_TYPE_NUMERIC);
cell.setCellValue(Double.parseDouble(double2String));
persistWorkbook(wb);
s.close(); travelSheet(); } private static void travelSheet() throws FileNotFoundException, IOException {
Workbook wb;
Sheet sheet;
InputStream s=new FileInputStream(excelName);
wb=new HSSFWorkbook(s);
sheet=wb.getSheetAt(0);
for (Row row_temp : sheet) {
for (Cell cell_temp : row_temp) {
getCellValue(cell_temp);
}
}
s.close();
} private static void getCellValue(Cell cell) {
switch (cell.getCellType()) {
case Cell.CELL_TYPE_NUMERIC:
System.out.println("CELL_TYPE_NUMERIC:"+cell.getNumericCellValue());
break;
case Cell.CELL_TYPE_STRING:
String stringCellValue = cell.getStringCellValue();
System.out.println("CELL_TYPE_STRING:"+stringCellValue);
System.out.println("toDouble:"+Double.parseDouble(stringCellValue));
break;
default:
System.out.println("error");
break;
} } private static void persistWorkbook(Workbook wb)
throws FileNotFoundException, IOException {
OutputStream stream=new FileOutputStream(excelName);
wb.write(stream);
stream.flush();
stream.close();
} }

Output:

CELL_TYPE_NUMERIC:99.333333
Type: CELL_TYPE_NUMERIC==>CELL_TYPE_STRING
CELL_TYPE_NUMERIC:99.333333
CELL_TYPE_STRING:99.333333
toDouble:99.333333
Type: CELL_TYPE_STRING==>CELL_TYPE_NUMERIC
CELL_TYPE_NUMERIC:99.333333
CELL_TYPE_STRING:99.333333
toDouble:99.333333
CELL_TYPE_NUMERIC:99.333333

结论:

此场景无精度损失。

java操作Excel处理数字类型的精度损失问题验证的更多相关文章

  1. java操作Excel、PDF文件

    java操作Excel.PDF文件 分享者:Vashon 分享来源:CSDN博客 下面这些是在开发中用到的一些东西,有的代码贴的不是完整的,只是贴出了关于操作EXCEL的代码: jxl是一个*国人写的 ...

  2. java操作excel 工具类

    java操作excel 可参考https://blog.csdn.net/xunwei0303/article/details/53213130 直接上代码: 一.java生成excel文件: pac ...

  3. Java操作Excel文件以及在Android中的应用

    本文章由临江仙原创,转载请注明出处:http://blog.csdn.net/zhy_cheng/article/details/10286563 Excel作为一种有格式的文件,可以使用Java来对 ...

  4. Java 操作 EXCEL

    今天帮朋友写了一段用来处理EXCEL内容的程序,在这里记录下自己的学习过程.主要是对EXCEL表格中的内容做分类和统计,使用计算机来做这种重复的机械性地工作再好不过了.首先,我们需要下载一个java操 ...

  5. JAVA操作Excel时文字自适应单元格的宽度设置方法

    使用JAVA操作Excel通常都使用JXL,方法很简单网上也有很多的教程,然后往往一些细节性的问题却导致我们这些Programmer苦恼不已.这两天帮一个朋友做一个Excel表格自动生成的小软件,就遇 ...

  6. jxl的使用总结(java操作excel)

    jxl.jar是通过java操作excel表格的工具类库: jxl.jar包:链接:http://pan.baidu.com/s/1o8qFJHw 密码:5jyq 1:通过模拟实现创建一个表格,然后模 ...

  7. 【转载】jxl的使用总结(java操作excel)

    jxl.jar是通过java操作excel表格的工具类库: 链接:https://pan.baidu.com/s/1AAT_eA_Q47zFeQohap6eQg 提取码:777b 1:通过模拟实现创建 ...

  8. java操作excel文件

    采用POI操作excel API:http://poi.apache.org/apidocs/org/apache/poi/hssf/usermodel/HSSFCell.html poi包:http ...

  9. java操作excel总结---poi

    前不久做过Excel的导入导出功能,其主要的难点是java如何操作Excel文档.现在就来介绍一下利用Apache的poi如何操作Excel. 1.准备工作:导入Apache POI的相关jar包,P ...

随机推荐

  1. 把Orchard部署到Windows Azure Web Sites

    很久前就想做个人站点,主要用来记录自己的生活,我喜欢摄影,烘焙…然后又刚刚入皮坑,这些都可以放在网站上展示一下,或许还能为自己带来收入. 然后手上刚好有Azure的试用,于是乎动力就上来了. 以下是部 ...

  2. 快速构建ASP.NET MVC Admin主页

    前言 后台开发人员一般不喜欢调样式,搞半天样式出不来,还要考虑各种浏览器兼容,费心费力不讨好,还好互联网时代有大量的资源共享,避免我们从零开始,现在就来看怎么快速构建一个ASP.NET MVC后台管理 ...

  3. IOS开发之格式化日期时间的使用 && 编程中常见问题

    今天在做一个有关时间的一些开发的时候,遇见了一写问题,反正来说既是很简单的问题,但毕竟用了我一些时间去调错误,遂记录之. 本来是想用 NSDateFormat 来转换一下服务器返回的时间,然后在客户端 ...

  4. ibatis缓存配置

    一.sqlmapconfig.xml <sqlMapConfig> <settings useStatementNamespaces="true"  cacheM ...

  5. 4.7 《硬啃设计模式》 第24章 麻烦的多角关系 - 中介者模式(Mediator Pattern)简介

    在Windows程序中,有时候界面控件之间的交互会很麻烦,如:A控件显示什么的时候,B控件要显示什么,另外C控件要不可用,同样其它控件也会有类似的复杂要求.控件与控件之间很容易形成复杂的多角关系了.现 ...

  6. 迪杰斯特拉算法c语言实现

    /*http://1wangxiaobo@163.com 数据结构C语言版 迪杰斯特拉算法  P189 http://1wangxiaobo@163.com 编译环境:Dev-C++ 4.9.9.2  ...

  7. OGNL逻辑标签,UI标签

    逻辑标签 public class IndexAction extends BasicAction{ private static final long serialVersionUID = 1L; ...

  8. Jenkins Maven打包出错异常的解决方法

    Jenkins是一个很好用的打包部署工具,实现一键式部署项目,在项目处于测试阶段或者对于运维人员来讲是非常方便的一个工具. 但是最近使用Jenkins部署项目时老是出错,主要是maven打包的问题,错 ...

  9. server配置学习 ---- 关闭防火墙

    iptables 一种网络防火墙,在LINUX下使用,RedHat9.0版本号以上自带. 它能够实现NAT转换.能够做上网代理. 首先对于server的配置第一步来说就是关闭防火墙.在没有图形化中的l ...

  10. 【Android】ScrollView+GridView 显示问题

    在使用Android的ScrollView里面嵌套GridView时,设置android:layout_height="wrap_content"属性,运行界面的效果不会出现全部数 ...