1 背景
1.double直接转string,例如sout(double)或者String.valueOf(double),假设是整数,会自动在后面添加“.0”,我们不需要这个添加;
2.不要用科学计数法显示
2 正确示例
(左double 右String)
1 -> 1
1.0 ->1
1.1->1.1
100->100
3 代码
private String convertDoubleToString(double val) {
BigDecimal bd = new BigDecimal(String.valueOf(val));
return bd.stripTrailingZeros().toPlainString();
}
说明:stripTrailingZeros去除末尾的".0",toPlainString表示不使用科学计数法(toString会使用科学计数法)。
4 测试
public final class Test {
public static void main(String[] args) {
double val = 1;
System.out.println(val);
System.out.println(convertDoubleToString(val));
System.out.println(convertDoubleToString(1.0));
System.out.println(convertDoubleToString(1.1));
System.out.println(convertDoubleToString(1.9));
System.out.println(convertDoubleToString(100));
}
private static String convertDoubleToString(double val) {
BigDecimal bd = new BigDecimal(String.valueOf(val));
return bd.stripTrailingZeros().toPlainString();
}
}
打印:
---------2020.10.9补充⬇️---------
5.新方法
public static String convertRate2Decimal(Double rate) {
if (rate == null) {
return null;
}
NumberFormat nf = NumberFormat.getPercentInstance();
nf.setMaximumFractionDigits(2);// 设置保留小数位
nf.setRoundingMode(RoundingMode.HALF_UP); // 设置舍入模式
return nf.format(rate);
}