赞
踩
休息了好久,今天终于开工了。一个同事年前写的一段代码,今天测试的时候出了点问题,便找到我,我看了看他的代码,大概知道了原因。他要做的功能是采取POI导出数据为Excle,而且年前测试也没发现什么问题,但是由于某些原因,需要我导部分测试数据给他,所以测试出现问题便找到了我。
说来也挺有意思,导给他的数据是今儿现造的,其中涉及的金额一项,我都设置的特别大,都是几亿几亿的造,导致他导出来的表格金额这一项,采用的是科学记数法,他也没想到,其中原因是因为Mysql读取值很大的Double类型数据时会采用科学计数法,让他打了日志看,他也发现了问题所在。那么,如何解决呢?
- public static void main(String[] args) {
- Double dabo = 88664433210.88d;
- System.out.println(dabo);
- /**
- * 方法一
- */
- DecimalFormat df = new DecimalFormat();
- df.setMaximumFractionDigits(2);// 设置小数位
- String replace = df.format(dabo).replace(",", ""); //去掉千分符号
- System.out.println(replace);
-
- /**
- * 方法二
- */
- java.text.NumberFormat nf = java.text.NumberFormat.getInstance();
- nf.setGroupingUsed(false);
- String scoreStr = nf.format(dabo);
- System.out.println(scoreStr);
-
- /**
- * 方法三
- */
- NumberFormat numberFormat = NumberFormat.getNumberInstance();
- numberFormat.setMaximumFractionDigits(0);
- numberFormat.setMinimumFractionDigits(0);
- numberFormat.setMaximumFractionDigits(2);// 设置小数位
- String format = numberFormat.format(dabo).replace(",", ""); //去掉千分符号;
- System.out.println(format);
-
- }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。