注意Mysql读取值很大的Double类型数据时会采用科学计数法

休息了好久,今天终于开工了。一个同事年前写的一段代码,今天测试的时候出了点问题,便找到我,我看了看他的代码,大概知道了原因。他要做的功能是采取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);

	}
发布了194 篇原创文章 · 获赞 20 · 访问量 5万+

猜你喜欢

转载自blog.csdn.net/weixin_39309402/article/details/104481549