使用的是 java.text.DecimalFormat 类 和 java.math.BigDecimal 类
//实际中需要格式化结果的地方:
double e = 2.7182818284;//数学常数自然对数底数-欧拉数
//取一位整数
System.out.println("pattern:0 ===="+new DecimalFormat("0").format(e));//结果:3
System.out.println("pattern:# ===="+new DecimalFormat("#").format(e));//结果:3
//取一位整数和两位小数
System.out.println("pattern:0 ===="+new DecimalFormat("0.00").format(e));//结果:2.72
System.out.println("pattern:0 ===="+new DecimalFormat("0.0").format(e));//结果:2.7
System.out.println("pattern:# ===="+new DecimalFormat("#.##").format(e));//结果:2.72
System.out.println("pattern:# ===="+new DecimalFormat("#.#").format(e));//结果:2.7
//取两位整数和三位小数,整数不足部分以0填补。
System.out.println("pattern:0 ===="+new DecimalFormat("00.000").format(e));//结果:02.718
System.out.println("pattern:# ===="+new DecimalFormat("##.###").format(e));//结果:2.718
//取所有整数部分
System.out.println("pattern:# ===="+new DecimalFormat("#").format(e));//结果:3
//以百分比方式计数,并取两位/一位小数/全整数部分
System.out.println("pattern:# ===="+new DecimalFormat("#.##%").format(e));//结果:271.83%
System.out.println("pattern:# ===="+new DecimalFormat("#.#%").format(e));//结果:271.8%
System.out.println("pattern:# ===="+new DecimalFormat("#%").format(e));//结果:272%
System.out.println("pattern:0 ===="+new DecimalFormat("0.00%").format(e));//结果:271.83%
System.out.println("pattern:0 ===="+new DecimalFormat("0.0%").format(e));//结果:271.8%
System.out.println("pattern:0 ===="+new DecimalFormat("0%").format(e));//结果:272%
long c=299792458;//空气中的光速
//显示为科学计数法,并取五位小数
System.out.println("pattern:# ===="+new DecimalFormat("#.#####E0").format(c));//结果:2.99792E8
System.out.println("pattern:0 ===="+new DecimalFormat("0.00000E0").format(c));//结果:2.99792E8
//显示为两位整数的科学计数法,并取四位小数
System.out.println(new DecimalFormat("00.####E0").format(c));//结果:29.9792E7
//每三位以逗号进行分隔。
System.out.println(new DecimalFormat(",###").format(c));//结果:299,792,458
System.out.println(new DecimalFormat("###,###.##").format(c));//结果:299,792,458
//将文本中的格式串匹配替换
System.out.println(new DecimalFormat("光速大小为每秒,###米。").format(c));//结果:光速大小为每秒299,792,458米。
System.out.println(new DecimalFormat("光速大小为每秒0%米。").format(c));//结果:光速大小为每秒29979245800%米。
System.out.println(new DecimalFormat("光速大小为每秒#.#####E0米。").format(c));//结果:光速大小为每秒2.99792E8 米。
//实际中需要计算的地方:
//总费用
BigDecimal allCost = new BigDecimal("0");
//晚餐费
BigDecimal eatCost = new BigDecimal("100.34");
//宾馆费
BigDecimal restCost = new BigDecimal("150.43");
//合计
allCost = allCost.add(eatCost).add(restCost);
//需要保留2位小数四舍五入的话方法1
allCost = allCost.setScale(2,BigDecimal.ROUND_HALF_UP);
System.out.println(allCost.doubleValue());//结果:250.77
System.out.println(allCost.intValue());//结果:250
//需要保留2位小数四舍五入的话方法2
DecimalFormat df = new DecimalFormat("0.00");
System.out.println(df.format(allCost));//结果:250.77
allCost = allCost.setScale(1,BigDecimal.ROUND_HALF_UP);
System.out.println(allCost.doubleValue());//结果:250.8
BigDecimal num1 = new BigDecimal("100");
BigDecimal num2 = new BigDecimal("50");
//加法
BigDecimal result1 = num1.add(num2);
System.out.println("和 是 : " + result1);//结果:150
//减法
BigDecimal result2 = num1.subtract(num2);
System.out.println("差 是 : " + result2);//结果:50
//乘法
BigDecimal result3 = num1.multiply(num2);
System.out.println("积 是 : " + result3);//结果:5000
//除法
BigDecimal result4 = num1.divide(num2);
System.out.println("商 是 : " + result4);//结果:2
//比较
BigDecimal num = new BigDecimal("100");//用做比较的值
System.out.println(num1.compareTo(num2));//大于 时,返回 1
System.out.println(num.compareTo(num1));//等于 时,返回 0
System.out.println(num2.compareTo(num1));//小于 时,返回 -1
System.out.println(num1.min(num2));//求两个数的中的最小值,返回小的数
System.out.println(num1.max(num2));//求两个数的中的最小值,返回小的数