• java DecimalFormat类


     
     
      
     

           今天去面试了,需要上机做题。题目的内容是计算一个货物订单的税费和总价格(包括税费),结果需要精确到两个小数,同时按照如下规则进行处理:

          3.01 ——>3.05,

          2.48——>2.50,

          2.14——>2.15。

          上机的时候不能上网,没有API,但是你可以查源码。这个题目有三个用例测试,而且你的运行结果必须和答案完全相等,你才能获得success。

          当我做到对数据格式化的时候,我卡住了。我只记得NumberFormat类,但是不知在哪个包里,简直就是悲剧啊!

          回来上网查了一篇文章,写的还可以。我就黏贴过来啦。

    import java.text.DecimalFormat;
    public class DoubleFormate {
     public static void main(String[] args) {
      java.text.DecimalFormat df=new java.text.DecimalFormat("0.00");//保留2位小数
      double d1=123456789.123456;
      double d2=987654321.987654321;
      
      System.out.println("format1_d1="+df.format(d1));//输出format1_d1=123456789.12
      System.out.println("format1_d2="+df.format(d2));//format1_d2=987654321.99  四舍五入
      
      DecimalFormat dff = new DecimalFormat("#,##0.00");
      System.out.println("format2_d1="+dff.format(d1));//输出:format2_d1=123,456,789.12
      System.out.println("format2_d2="+dff.format(d2));//输出:format2_d2=987,654,321.99 四舍五入
     }
    }
     
    主要使用的类:java.text.DecimalFormat
    1。实例化对象,可以用如下两种方法:
    DecimalFormat df=(DecimalFormat)NumberFormat.getInstance();
    DecimalFormat df1=(DecimalFormat) DecimalFormat.getInstance();
    因为DecimalFormat继承自NumberFormat。
    2。设定小数位数
    系统默认小数位数为3,如:
    DecimalFormat df=(DecimalFormat)NumberFormat.getInstance();
    System.out.println(df.format(12.3456789));
    输出:12.346
    现在可以通过如下方法把小数为设为两位:
    df.setMaximumFractionDigits(2);
    System.out.println(df.format(12.3456789));
    则输出为:12.35
    3。将数字转化为百分比输出,有如下两种方法:
    (1)
    df.applyPattern("##.##%");
    System.out.println(df.format(12.3456789));
    System.out.println(df.format(1));
    System.out.println(df.format(0.015));
    输出分别为:1234.57% 100% 1.5%
    (2)
    df.setMaximumFractionDigits(2);
    System.out.println(df.format(12.3456789*100)+"%");
    System.out.println(df.format(1*100)+"%");
    System.out.println(df.format(0.015*100)+"%");
    输出分别为:
    1,234.57% 100% 1.5%
    4。设置分组大小
    DecimalFormat df1=(DecimalFormat) DecimalFormat.getInstance();
    df1.setGroupingSize(2);
    System.out.println(df1.format(123456789));
    输出:1,23,45,67,89
    还可以通过df1.setGroupingUsed(false);来禁用分组设置,如:
    DecimalFormat df1=(DecimalFormat) DecimalFormat.getInstance();
    df1.setGroupingSize(2);
    df1.setGroupingUsed(false);
    System.out.println(df1.format(123456789));
    输出:123456789
    5。设置小数为必须为2位
    DecimalFormat df2=(DecimalFormat) DecimalFormat.getInstance();
    df2.applyPattern("0.00");
    System.out.println(df2.format(1.2))

  • 相关阅读:
    HDU 1301 Jungle Roads
    HDU 1671 Phone List
    HDU 1992 Tiling a Grid With Dominoes
    HDU 1251 统计难题
    总结自己的近期表现
    Windows API 函数: SetClassLong
    ModifyStyle
    assert,assert_valid,verify,trace用法
    用VC++绘制位图按钮
    Codeforces 144D. Missile Silos 最短路
  • 原文地址:https://www.cnblogs.com/xiohao/p/3183186.html
Copyright © 2020-2023  润新知