J2EE保留小数问题

  1. 如果在前台页面,可以直接使用js的toFixed() 方法。
    number.toFixed(x)  可把 Number 四舍五入为指定小数位数的数字。
    参数x :必需。规定小数的位数,是 0 ~ 20 之间的值,包括 0 和 20,有些实现可以支持更大的数值范围。如果省略了该参数,将用 0 代替。

    eg:
    var num = 5.56789;
    var n=num.toFixed(); 

    输出结果:6;

    var num = 5.56789;
    var n=num.toFixed(2); 

    输出结果:5.57;

  2. 如果在后台处理,则使用 java.text.DecimalFormat 类。
    DecimalFormat 可以帮我们用最快的速度将数字格式化成我们所需要的样子。

    eg: 此例处理 float或double 数据,
    1 Double ss = new Double(total); 
    2 String fen = "0";
    3 if(!ss.equals(new Double(0))){
    4     DecimalFormat decimalFormat = new DecimalFormat("0.0");
    5     fen= decimalFormat.format(total);//format 返回的是字符串
    6 }
    7 return fen;


    类中的符号含义: 
          0 一个数字 
          # 一个数字,不包括 0 
          . 小数的分隔符的占位符 
          , 分组分隔符的占位符 
          ; 分隔格式。 
          - 缺省负数前缀。 
          % 乘以 100 和作为百分比显示 
          ? 乘以 1000 和作为千进制货币符显示;用货币符号代替;如果双写,用国际货币符号代替。如果出现在一个模式中,用货币十进制分隔符代替十进制分隔符。 
          X 前缀或后缀中使用的任何其它字符,用来引用前缀或后缀中的特殊字符。 

    eg:实例 

    DecimalFormat df1 = new DecimalFormat("0.0"); 
    
    DecimalFormat df2 = new DecimalFormat("#.#"); 
    
    DecimalFormat df3 = new DecimalFormat("000.000"); 
    
    DecimalFormat df4 = new DecimalFormat("###.###"); 
    
    System.out.println(df1.format(12.34)); 
    
    System.out.println(df2.format(12.34)); 
    
    System.out.println(df3.format(12.34)); 
    
    System.out.println(df4.format(12.34)); 


    输出结果: 

    12.3 
    
    12.3 
    
    012.340 
    
    12.34

     
    常用的例子:

     1 double pi=3.1415927; //圆周率 
     2    
     3 //取一位整数    
     4 System.out.println(newDecimalFormat("0").format(pi));   //3  
     5   
     6 //取一位整数和两位小数    
     7 System.out.println(newDecimalFormat("0.00").format(pi)); //3.14 
     8    
     9 //取两位整数和三位小数,整数不足部分以0填补。    
    10 System.out.println(new DecimalFormat("00.000").format(pi));// 03.142  
    11   
    12 //取所有整数部分    
    13 System.out.println(newDecimalFormat("#").format(pi));   //3  
    14   
    15 //以百分比方式计数,并取两位小数    
    16 System.out.println(new DecimalFormat("#.##%").format(pi)); //314.16% 
    17      
    18 longc=299792458;  //光速    
    19 
    20 //显示为科学计数法,并取五位小数    
    21 System.out.println(newDecimalFormat("#.#####E0").format(c)); //2.99792E8  
    22   
    23 //显示为两位整数的科学计数法,并取四位小数    
    24 System.out.println(newDecimalFormat("00.####E0").format(c)); //29.9792E7 
    25    
    26 //每三位以逗号进行分隔。    
    27 System.out.println(newDecimalFormat(",###").format(c));   //299,792,458 
    28    
    29 //将格式嵌入文本    
    30 System.out.println(newDecimalFormat("光速大小为每秒,###米。").format(c));

     

posted @ 2016-11-23 17:28  码出一片天  阅读(306)  评论(0编辑  收藏  举报