如何使java中double类型不以科学计数法表示

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何使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";
参考技术A 你好,可以使用java.text.DecimalFormat,格式化数字,比如java">doublea=2.3659874;//小数格式化,引号中的0.000表示保留小数点后三位(第四位四舍五入)DecimalFormatdf=newDecimalFormat("0.000");Stringnum=df.format(a);System.out.println(num);//输出结果就是2.366具体你可以查DecimalFormat的使用方法希望可以帮助到你

java使用poi读取excel时,电话号码变成了科学计数法,整数变成double,怎么改过来

参考技术A

为了防止数字变成科学计数法方式表示,在源文件以及java代码中都用文的方式去生成和解析excel,具体如下:

生成Excel时,设置单元格格式为STRING,即:

//关键代码

HSSFCell  cell = new HSSFCell();

cell.setCellType(HSSFCell.CELL_TYPE_STRING);

同理,解析的时候,首先要保证源excel文件中该单元格格式是文本类型的,然后在java代码里用STRING类型去解析:

//关键代码

String value = cell.getStringCellValue();

扩展资料;

在这里,将只介绍一些和格式设置有关的语句,假定workbook就是对一个工作簿的引用。在Java中,第一步要做的就是创建和设置字体和单元格的格式,然后再应用这些格式:

创建字体,设置其为红色、粗体:

HSSFFont font = workbook.createFont();

font.setColor(HSSFFont.COLOR_RED);

font.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);

参考资料来源:百度百科-POI

以上是关于如何使java中double类型不以科学计数法表示的主要内容,如果未能解决你的问题,请参考以下文章

如何使java中double类型不以科学计数法表示

如何使java中double类型不以科学计数法表示

double转成string时,不以科学计数法表示

Java导出csv数字如何不以科学计数显示,不能改变原来的值

Java中double类型如何避免显示为科学计数法

JAVA中Double,如何才能不显示成科学计数法