本文主要是介绍java格式化小数点问题,四舍五入,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
- 方法一:
使用DecimalFormat进行数字格式化
- public static void test1(DecimalFormat df) {
- //默认显示3位小数
- double d = 1.5555555;
- System.out.println(df.format(d));//1.556
- //设置小数点后最大位数为5
- df.setMaximumFractionDigits(5);
- df.setMinimumIntegerDigits(15);
- System.out.println(df.format(d));//1.55556
- df.setMaximumFractionDigits(2);
- System.out.println(df.format(d));//1.56
- //设置小数点后最小位数,不够的时候补0
- df.setMinimumFractionDigits(10);
- System.out.println(df.format(d));//1.5555555500
- //设置整数部分最小长度为3,不够的时候补0
- df.setMinimumIntegerDigits(3);
- System.out.println(df.format(d));
- //设置整数部分的最大值为2,当超过的时候会从个位数开始取相应的位数
- df.setMaximumIntegerDigits(2);
- System.out.println(df.format(d));
- }
- public static void test2(DecimalFormat df) {
- int number = 155566;
- //默认整数部分三个一组,
- System.out.println(number);//输出格式155,566
- //设置每四个一组
- df.setGroupingSize(4);
- System.out.println(df.format(number));//输出格式为15,5566
- DecimalFormatSymbols dfs = DecimalFormatSymbols.getInstance();
- //设置小数点分隔符
- dfs.setDecimalSeparator(';');
- //设置分组分隔符
- dfs.setGroupingSeparator('a');
- df.setDecimalFormatSymbols(dfs);
- System.out.println(df.format(number));//15a5566
- System.out.println(df.format(11.22));//11;22
- //取消分组
- df.setGroupingUsed(false);
- System.out.println(df.format(number));
- }
- public static void test3(DecimalFormat df) {
- double a = 1.220;
- double b = 11.22;
- double c = 0.22;
- //占位符可以使用0和#两种,当使用0的时候会严格按照样式来进行匹配,不够的时候会补0,而使用#时会将前后的0进行忽略
- //按百分比进行输出
- // df.applyPattern("00.00%");
- df.applyPattern("##.##%");
- System.out.println(df.format(a));//122%
- System.out.println(df.format(b));//1122%
- System.out.println(df.format(c));//22%
- double d = 1.22222222;
- //按固定格式进行输出
- df.applyPattern("00.000");
- System.out.println(df.format(d));//01.222
- df.applyPattern("##.###");
- System.out.println(df.format(d));//1.222
- }
-
- 方法二:
- java Math.round() Java中的四舍五入函数
- 此方法验证时并未实现,但能完美实现单实型和双实型数的转换,可以有效预防String.format来格式化浮点型数字时因为语言系统而导致的解析不正确案例请见:
- 易错案例
-
Object resultStr = null;
-
resultStr = (float) (Math.round(Double.parseDouble(sourceStr) * 10) / 10);
-
resultStr = Double.valueOf(Math.round(Float.parseFloat(sourceStr) * 100) / 100);
方法三 -
使用String.format
-
- public static void main(String[] args) {
- String str=null;
- str=String.format("Hi,%s", "王力");
- System.out.println(str);
- str=String.format("Hi,%s:%s.%s", "王南","王力","王张");
- System.out.println(str);
- System.out.printf("字母a的大写是:%c %n", 'A');
- System.out.printf("3>7的结果是:%b %n", 3>7);
- System.out.printf("100的一半是:%d %n", 100/2);
- System.out.printf("100的16进制数是:%x %n", 100);
- System.out.printf("100的8进制数是:%o %n", 100);
- System.out.printf("50元的书打8.5折扣是:%f 元%n", 50*0.85);
- System.out.printf("上面价格的16进制数是:%a %n", 50*0.85);
- System.out.printf("上面价格的指数表示:%e %n", 50*0.85);
- System.out.printf("上面价格的指数和浮点数结果的长度较短的是:%g %n", 50*0.85);
- System.out.printf("上面的折扣是%d%% %n", 85);
- System.out.printf("字母A的散列码是:%h %n", 'A');
- }
这篇关于java格式化小数点问题,四舍五入的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!