Java导出csv数字如何不以科学计数显示,不能改变原来的值
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java导出csv数字如何不以科学计数显示,不能改变原来的值相关的知识,希望对你有一定的参考价值。
如生成csv文件后,身份证号不以科学计数法显示,并且身份证号前不加任何字符显示原来的值,\t不行,拷贝到记事本后会多出双引号和空格
参考技术A 可能有两方面的问题。1。Java导出数据的时候,导出的是什么类型的数字,如果在处理过程中被编成了字符格式,估计就比较麻烦。如果有,要保证输出的时候是double或者其他类型。
2。Excel也会自动处理数字,你把相应列的单元格格式改变成普通,或者字符等,不让它自己变成科学计数法
如何使java中double类型不以科学计数法表示
在java中,把一个double或者BigDecimal的小数转换为字符串时,经常会用科学计数法表示,而我们一般不想使用科学计数法,可以通过:
DecimalFormat a = new DecimalFormat("#,##0.00000000");
System.out.println(a.format(11111111.0000001000000001));
的方式来格式化输出字符串。
对于BigDecimal的小数,如果制定精度<=6, 则可以放心的使用其toString函数。但是对于>6的精度,有可能会使用科学计数法,查看器代码有如下判断:
long adjusted = -(long)scale + (coeff.length-1);
if ((scale >= 0) && (adjusted >= -6)){
非科学计数法的toString.
}
其中scale指BigDecimal的精度,
coeff对应使用BigInteger存储的值的toString字符串, coeff = intVal.abs().toString().toCharArray(),也就是说BigDecimal在对应精度下的整数值,例如BigDecimal ob = new BigDecimal(0.00000011), ob的精度为7, 则coeff="1";如果ob=new BigDecimal(0.10000011), 则coeff="1000001";如果ob=new BigDecimal(0.00000001), 则coeff="0";
多使用bigdecimal 少使用double
以上是关于Java导出csv数字如何不以科学计数显示,不能改变原来的值的主要内容,如果未能解决你的问题,请参考以下文章
java导出CSV 用excel打开 数字过长变成科学计数法