import java.math.BigDecimal;
import java.math.RoundingMode;
import java.text.DecimalFormat;
public class JEzhuanwanyuan {
public static void main(String[] args) {
String dataValue = "1395387634";//人口值
int dataValue2 = 1395387634;//人口值
//GDP值
String gdpValue = "10358834322178.93";
double gdpValue2 = 10358834322178.93;
System.out.println("某国人口1:"+getFormatNumber(dataValue,"10000")+"万人");
System.out.println("某国人口2:"+getFormatNumber(dataValue2,"10000")+"万人");
System.out.println("某国GDP1:"+getFormatNumber(gdpValue,"100000000")+"亿元");
System.out.println("某国GDP2:"+getFormatNumber(gdpValue2,"10000000")+"亿元");
}
/**
* double数字转万位单位值
* @param value 字符串数字值
* @param scale 精度值
* @return
*/
public static String getFormatNumber(double value,String scale) {
return getFormatObjValue(new BigDecimal(value),scale);
}
/**
* 字符串数字转万位单位值
* @param value 字符串数字值
* @param scale 精度值
* @return
*/
public static String getFormatNumber(String value,String scale) {
return getFormatObjValue(new BigDecimal(value),scale);
}
/**
* 对大精度对象值进行万位格式化
* @param bigDecimal 大精度对象
* @param scale 精度值
* @return
*/
public static String getFormatObjValue(BigDecimal bigDecimal,String scale) {
//转换为万元(除以10000)
BigDecimal decimal = bigDecimal.divide(new BigDecimal(scale));
//保留两位小数 ss="###.##";
//保留定位分组 ss="###,###.##";
//保留定位分组 ss="###.#";
String format = "###.#";
DecimalFormat formater = new DecimalFormat(format);
//四舍五入
formater.setRoundingMode(RoundingMode.HALF_UP);
//格式化完成之后得出结果
String rs = formater.format(decimal);
return rs;
}
}
打印结果如下:
对于打印结果中GDP1,GDP2值不同,应该是System.out.println()中精度写错1位,在此不是本文重点,请读者忽略之,哈哈哈哈......