提供精确的小数位四舍五入处理

王朝java/jsp·作者佚名  2006-01-10
宽屏版  字体: |||超大  

提供精确的小数位四舍五入处理,这个工具类很实用!

/*

* <p>Title: 提供精确的小数位四舍五入处理</p>

* <p>Description: 提供精确的小数位四舍五入处理</p>

* <p>Copyright: Copyright (c) 2005</p>

* <p>Company: ***</p>

*/

package com.neusoft.others;

import java.math.BigDecimal;

/**

* 类Round.java的实现描述:提供精确的小数位四舍五入处理

*

* @author wangdw wang8121@hotmail.com[url=mailto:wdw004@163.com][/url]

* @version 1.0

* Date 2005-1-14

* @see java.lang.Class

* History:

* <author> <time> <version> <desc>

*/

public class Round

{

/**

* 提供精确的小数位四舍五入处理。

* @param v 需要四舍五入的数字

* @param scale 小数点后保留几位

* @return 四舍五入后的结果

*/

private double round(double v, int scale)

{

if (scale < 0)

{

throw new IllegalArgumentException(

"The scale must be a positive integer or zero");

}

BigDecimal b = new BigDecimal(Double.toString(v));

BigDecimal one = new BigDecimal("1");

return b.divide(one, scale, BigDecimal.ROUND_HALF_UP).doubleValue();

}

/**

*

* 非四舍五入取整处理

* @param v

* @return

*/

public int roundDown(double v)

{

BigDecimal b = new BigDecimal(Double.toString(v));

BigDecimal one = new BigDecimal("1");

return b.divide(one, 0, BigDecimal.ROUND_DOWN).intValue();

}

/**

*

* 四舍五入取整处理

* @param v

* @return

*/

public int roundUp(double v)

{

BigDecimal b = new BigDecimal(Double.toString(v));

BigDecimal one = new BigDecimal("1");

return b.divide(one, 0, BigDecimal.ROUND_UP).intValue();

}

public static void main(String[] args)

{

Round round = new Round();

System.out.println(round.round(18.456, 2));

System.out.println(round.roundDown(18.567));

System.out.println(round.roundUp(18.567));

double doubleValue = 18.567;

int intValue = (int)doubleValue;

System.out.println(intValue);

}

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
© 2005- 王朝网络 版权所有