常见问题:浮点数据超长变科学计数

前言

  在项目开发中发现当Double类型的小数整数部分超过8位时,会自动转换为科学计数来展示,这肯定是不符合需求的,通过下面的方法可轻松搞定科学计数的问题,并进行保留2位小数与去除无用0的处理。
  

解决方法

  抽出一个文本格式化工具类TextFormatUtil。

1
2
3
4
5
6
7
8
9
10
11
12
public class TextFormatUtil {
private static DecimalFormat mDecimalFormat = new DecimalFormat("0.##");
/**
* 格式化小数
* 保留两位,并做位数过大处理
*/
public static String formatDouble(double number) {
if (number != 0.00) return mDecimalFormat.format(number);
else return "0";
}
}

  使用时直接调用即可:TextFormatUtil.formatDouble(formatNumber)。简单解释一下,DecimalFormat是由Java提供的用于对十进制数字进行格式化的工具,按照符号进行填充,区分整数部分与小数部分:

  • 整数:从个位向高位填充,若位上有值则为原来的值,无值则看符号,符号为“0”则以“0”填充,符号为“#”则空着不填充。
  • 小数:符号为“0”或者“#”的个数都代表保留小数点后的几位,区别是“0”代表小数不足的部分以“0”填充,“#”代表小数不足的部分空着不填充。

  当然DecimalFormat还有更多的符号用法,需要的大家自行百度啦,这里就不赘述了。

总结

  博客好久没更新了,近期准备整理一下平时遇到的常见问题分享出来,有问题的话欢迎大家指正。

坚持原创技术分享,您的支持是我前进的动力,谢谢!