double d=1234.56789; 一: NumberFormat NumberFormat nf = NumberFormat.getNumberInstance(); nf.setMaximumFractionDigits(2); String format = nf.format(d); System.out.println("format-----"+format); nf.setRoundingMode(RoundingMode.UP); String format1 = nf.format(d); System.out.println("format1-----"+format1);// RoundingMode RoundingMode是一个枚举类,有一下几个常量:UP,DOWN,CEILING,FLOOR,HALF_UP,HALF_DOWN,HALF_EVEN,UNNECESSARY UP: 远离零方向舍入的舍入模式。始终对非零舍弃部分前面的数字加 1 5.5 --> 6; 1.1 --> 2; DOWN: 向零方向舍入的舍入模式。从不对舍弃部分前面的数字加 1(即截尾) 5.5 --> 5; 1.1 --> 1; CEILING: 向正无限大方向舍入的舍入模式 5.5 --> 6; 1.1 --> 2; -1.1 --> -1; FLOOR: 向负无限大方向舍入的舍入模式 5.5 --> 5; 1.1 --> 1; -1.1 --> -2; HALF_UP: 向最接近数字方向舍入的舍入模式,如果与两个相邻数字的距离相等,则向上舍入。 5.5 --> 6; 1.1 --> 1; -1.1 --> -1; HALF_DOWN: 向最接近数字方向舍入的舍入模式,如果与两个相邻数字的距离相等,则向下舍入。 5.5 --> 5; 1.1 --> 1; -1.1 --> -1; HALF_EVEN: 向最接近数字方向舍入的舍入模式,如果与两个相邻数字的距离相等,则向相邻的偶数舍入。如果舍弃部分左边的数字为奇数,则舍入行为同RoundingMode.HALF_UP;如果为偶数,则舍入行为同RoundingMode.HALF_DOWN 5.5 --> 6; 1.6 --> 2; -1.6 --> -2; UNNECESSARY:用于断言请求的操作具有精确结果的舍入模式,因此不需要舍入。如果对生成精确结果的操作指定此舍入模式,则抛出 ArithmeticException。
5.5 | 抛出 ArithmeticException |
2.5 | 抛出 ArithmeticException |
1.6 | 抛出 ArithmeticException |
1.1 | 抛出 ArithmeticException |
1.0 | 1 |
-1.0 | -1 |
-1.1 | 抛出 ArithmeticException |
-1.6 | 抛出 ArithmeticException |
二: DecimalFormat DecimalFormat df = new DecimalFormat("#.00"); String format2 = df.format(d); System.out.println("format2-----"+format2); 三: System.out.println("format3-----"+String.format("%.2f", d));
输出结果:
format -----1,234.57
format1-----1,234.57
format2-----1234.57
format3-----1234.57