保留小数位数

保留小数位数
保留小数位数

J2EE中保留小数位数

1、在JSP页面保留小数

导入<%@ taglib uri="/WEB-INF/tlds/struts-bean.tld" prefix="bean"%>标签

name:用来指定对象

filter:用来指定是否屏蔽到属性值的HTML格式

property:用来指定name所代表的对象的属性名字

format:用来指定显示的时间,数字,日期等的格式

2、在java代码中保留小数并且要保持精度

DecimalFormat f = new DecimalFormat("#,##0.00");

f.setRoundingMode(RoundingMode.HALF_UP);

3、double类型数据的加、减、乘、除,并且保持精度。

/**

* @ create_date 2011-9-15

* @ author sun_yfei

* @ version 1.0

*/

package com;

import java.math.BigDecimal;

import java.text.DecimalFormat;

/**

* @title Arith

* @description float、double类型数据的加、减、乘、除运算。

* @author sun_yfei

* @version

* @create_date 2011-9-15

* @copyright (c) CVIC SE

*

*/

public class Arith {

//除法默认精度

public static final int DEF_DIV_SCALE=10;

/**

* @title main

* @description 测试main

* @author sun_yfei

* @create_date 2011-9-15

* @param args

*/

public static void main(String[] args) {

System.out.println(new

DecimalFormat("###,##0.0000").format(round(2893478927.283289374892758,3)));

System.out.println(round(add(23423.3452345,2345),3));

System.out.println(round(sub(123.1111111,23.1111111),3));

System.out.println(round(mul(100.00000,2.111111111),3));

System.out.println(round(div(9999.9999,100),3));

}

/**

*

* @title add

* @description double类型的加法运算

* @author sun_yfei

* @create_date 2011-9-15

* @param a 被加数

* @param b 加数

* @return 和

*/

public static double add(double a,double b){

BigDecimal bigDecimalA = new BigDecimal(String.valueOf(a));

BigDecimal bigDecimalB = new BigDecimal(String.valueOf(b));

return bigDecimalA.add(bigDecimalB).doubleValue();

}

/**

*

* @title sub

* @description double类型的减法运算

* @author sun_yfei

* @create_date 2011-9-15

* @param a 被减数

* @param b 减数

* @return 差

*/

public static double sub(double a,double b){

BigDecimal bigDecimalA = new BigDecimal(String.valueOf(a));

BigDecimal bigDecimalB = new BigDecimal(String.valueOf(b));

return bigDecimalA.subtract(bigDecimalB).doubleValue();

}

/**

*

* @title mul

* @description double类型的乘法运算

* @author sun_yfei

* @create_date 2011-9-15

* @param a 被乘数

* @param b 乘数

* @return 积

*/

public static double mul(double a,double b){

BigDecimal bigDecimalA = new BigDecimal(String.valueOf(a));

BigDecimal bigDecimalB = new BigDecimal(String.valueOf(b));

return bigDecimalA.multiply(bigDecimalB).doubleValue();

}

/**

*

* @title div

* @description double类型的乘法运算,并保留scale位小数

* @author sun_yfei

* @create_date 2011-9-15

* @param a 被除数

* @param b 除数

* @param scale 保留小数位数

* @return 保留scale位小数后的商

*/

public static double div(double a,double b,int scale){

if(scale<0){

throw new IllegalArgumentException("The scale must be a positive integer or zero!");

}

BigDecimal bigDecimalA = new BigDecimal(String.valueOf(a));

BigDecimal bigDecimalB = new BigDecimal(String.valueOf(b));

return bigDecimalA.divide(bigDecimalB, scale, BigDecimal.ROUND_HALF_UP).doubleValue();

}

/**

*

* @title div

* @description double类型的乘法运算,默认保留10位小数

* @author sun_yfei

* @create_date 2011-9-15

* @param a 被除数

* @param b 除数

* @return 保留10位小数后的商

*/

public static double div(double a,double b){

return div(a,b,DEF_DIV_SCALE);

}

/**

*

* @title round

* @description 保留scale位小数

* @author sun_yfei

* @create_date 2011-9-15

* @param a 需要保留小数位数的double型数据

* @param scale 需要保留的小数位数

* @return 保留scale位小数后的double型数据

*/

public static double round(double a,int scale){

if(scale<0){

throw new IllegalArgumentException("The scale must be a positive integer or zero!");

}

BigDecimal bigDecimal = new BigDecimal(Double.toString(a));

return bigDecimal.setScale(scale, BigDecimal.ROUND_HALF_UP).doubleValue();

}

}

相关主题
相关文档
最新文档