- 1 String 格式化
- 2 BigDecimal
- 3 DecimalFormat
引用类型 String 有一个格式化方法:format(String format, Object… args),支持 float 和 double 类型:
1、参数:
- format:A format string 格式字符串;
- args:格式字符串中格式说明符引用的参数。 如果比格式说明符更多的参数,额外的参数将被忽略。 参数的数量是可变的,可能为零。
2、结果:格式化的字符串;
3、异常:IllegalFormatException - 如果格式字符串包含非法语法,则与给定参数不兼容的格式说明符,给定格式字符串的参数不足或其他非法条件。
| 转换符 | 说明 | 示例 |
|---|---|---|
| %s | 字符串类型 | “myString” |
| %c | 字符类型 | ‘a’ |
| %b | 布尔类型 | false |
| %d | 整数类型(十进制) | 99 |
| %x | 整数类型(十六进制) | FF |
| %o | 整数类型(八进制) | 77 |
| %f | 浮点类型 | 98.98 |
| %a | 十六进制浮点类型 | F9.A47EF |
| %e | 指数类型 | 9.38e+5 |
| %g | 通用浮点类型(f 和 e 类型中较短的) | |
| %h | 散列码 | |
| %% | 百分比类型 | % |
| %n | 换行符 | |
| %tx | 日期与时间类型(x 代表不同的日期与时间转换符) |
public static void main(String[] args) {
double data = 3.025;
//利用字符串格式化的方式实现四舍五入,保留1位小数
String result = String.format("%.2f",data);
//1代表小数点后面的位数, 不足补0。f代表数据是浮点类型。保留2位小数就是“%.2f”,依此累推。
System.out.println(result);//输出3.03
}
2 BigDecimal
引用类型 java.math.BigDecimal 实现四舍五入,支持 float 和 double 类型:
public static void main(String[] args) {
double data = 3.026;
//利用BigDecimal来实现四舍五入.保留一位小数
double result = new BigDecimal(data).setScale(2, BigDecimal.ROUND_HALF_UP).doublevalue();
//1代表保留1位小数,保留两位小数就是2,依此累推
//BigDecimal.ROUND_HALF_UP 代表使用四舍五入的方式
System.out.println(result);//输出3.03
}
BigDecimal 的四舍五入注意事项:
- double data = 3.026; 中 3.026 为 double 时的四舍五入是 > 5 才可行,3.025 则输出 3.02;
- double data = 3.026f; 中 3.026f 为 float 时的四舍五入是 >= 5,3.025 则输出 3.03;
- float data = 3.026f; 中都为 float 时的四舍五入是 >= 5,3.025 则输出 3.03;
引用类型 java.text.DecimalFormat 实现四舍五入,仅支持 float 类型:
public static void main(String[] args) {
DecimalFormat decimalFormat=new DecimalFormat("#.##");
//保留2位小数,.后面的#代表小数点后面的位数,保留3位小数就是#.###
System.out.println(decimalFormat.format(3.065f));//输出3.07
System.out.println(decimalFormat.format(3.065));//double类型不支持,输出3.06
}



