今天遇到了一个数据转换的问题,网上找了很多,大概的方案就下面两种,总结一下做个备忘。
代码如下:
package com.llb.test;
import java.text.DecimalFormat;
import java.text.NumberFormat;
/**
* Double类型转百分比
*
* @author Jack Lee
* @since 2021-06-02
**/
public class DoubleToPercent {
public static void main(String[] args) {
double tmpValue = 0.21;
double tmpValue2 = 1.21;
double tmpValue3 = 1.21222;
DecimalFormat df = new DecimalFormat("0.00%");
String value = df.format(tmpValue);
System.out.println("DecimalFormat转换0.21后的结果:" + value);
String value2 = df.format(tmpValue2);
System.out.println("DecimalFormat转换1.21后的结果:" + value2);
String value3 = df.format(tmpValue3);
System.out.println("DecimalFormat转换1.21222后的结果:" + value3);
NumberFormat num = NumberFormat.getPercentInstance();
num.setMaximumIntegerDigits(3);
num.setMaximumFractionDigits(2);
System.out.println("NumberFormat转换0.21后的结果:" + num.format(tmpValue));
System.out.println("NumberFormat转换1.21后的结果:" + num.format(tmpValue2));
System.out.println("NumberFormat转换1.21222后的结果:" + num.format(tmpValue3));
}
}
控制台输出如下:
看上面的结果,不难发现:
第一种方案输出的结果比较平整,格式好看。
第二种方案输出格式中,如果小数位为0,则不会输出,格式比较乱。