• 如何保留小数点后N位?


    2014年10月17日09:48:39

    在做项目中遇到的,要把想显示的数据进行规定小数位的保留,下面写一下用过的方法:

    1. BigDecimal 方法(我做项目的时候用的方法)

     代码:

    java.math.BigDecimal
    BigDecimal bd = new BigDecimal("3.14159265");
    bd = bd.setScale(3,BigDecimal.ROUND_HALF_UP); 

    BigDecimal aa = new BigDecimal("3.1");
    aa = aa.setScale(3,BigDecimal.ROUND_HALF_UP);

    这里面的bd是自定义的变量,即最后取得小数点后若干位的数,3表示小数点后两位

    输入结果:

    bd=3.142

    aa=3.100

    2.DecimalFormat 方法

     

    DecimalFormat df1 = new DecimalFormat(“0.0″); //保留1位小数,带前导零
    
    DecimalFormat df2 = new DecimalFormat(“#.#”); //保留1位小数,可以不带前导零
    
    DecimalFormat df3 = new DecimalFormat(“000.00″); //保留2位小数,带前导零
    
    DecimalFormat df4 = new DecimalFormat(“###.##”); //保留2位小数,可以不带前导零
    

     

          模式中#为可选,存在则出现,不存在则不出现;
          模式中0为必须,存在则为具体数字,不存在则为零;

    例如:

     

    DecimalFormat df1 = new DecimalFormat("0.0"); //保留1位小数,带前导零
    DecimalFormat df2 = new DecimalFormat("#.#"); //保留1位小数,可以不带前导零
    DecimalFormat df3 = new DecimalFormat("000.000"); //保留2位小数,带前导零
    DecimalFormat df4 = new DecimalFormat("###.###"); //保留2位小数,可以不带前导零
    		
    System.out.println(df1.format(31.1556));
    System.out.println(df2.format(31.1556));
    System.out.println(df3.format(31.1556));
    System.out.println(df4.format(31.1556));
    System.out.println(df3.format(31.15));
    System.out.println(df4.format(31.15));
    

     

    输出结果:

    31.2
    31.2
    1531.156
    1531.156
    1531.150
    1531.15

    结论:

    1.df.format(double)的最终输出类型是String类型,但是参数必须为double类型

    2.模式中#为可选,存在则出现,不存在则不出现;

       模式中0为必须,存在则为具体数字,不存在则为零;

    3.整数位假如超过了本身定义的位数,那么就将整数位全部位数都显示出来。


     

     

     

     

  • 相关阅读:
    Bzoj1597 [Usaco2008 Mar]土地购买
    Bzoj1500 [NOI2005]维修数列
    模拟7 题解
    模拟6 题解
    模拟5 题解
    远古杂题 2
    远古杂题 1
    [NOIP2013]华容道 题解
    奇袭 CodeForces 526F Pudding Monsters 题解
    图论杂题
  • 原文地址:https://www.cnblogs.com/smilefortoday/p/4030339.html
Copyright © 2020-2023  润新知