java double 的精度_Java Double 精度问题总结

packageDemo_1.Test_2;importjava.math.BigDecimal;/*** @描述:Java Double 精度问题总结

* @详细描述:使用Java,double 进行运算时,经常出现精度丢失的问题,

* 总是在一个正确的结果左右偏0.0000**1。

* 特别在实际项目中,通过一个公式校验该值是否大于0,如果大于0我们会做一件事情,小于0我们又处理其他事情。

* 这样的情况通过double计算出来的结果去和0比较大小,尤其是有小数点的时候,

* 经常会因为精度丢失而导致程序处理流程出错。

*@authorBrokenColor

* @date 2017年3月2日下午1:13:34*/

public classDoubleTest {/*** 对double数据进行取精度.

*@paramvalue double数据.

*@paramscale 精度位数(保留的小数位数).

*@paramroundingMode 精度取值方式.

*@return精度计算后的数据.*/

public static double round(double value, intscale,introundingMode) {

BigDecimal bd= newBigDecimal(value);

bd=bd.setScale(scale, roundingMode);double d =bd.doubleValue();

bd= null;returnd;

}/*** double 相加

*@paramd1

*@paramd2

*@return

*/

public double sum(double d1,doubled2){

BigDecimal bd1= newBigDecimal(Double.toString(d1));

BigDecimal bd2= newBigDecimal(Double.toString(d2));returnbd1.add(bd2).doubleValue();

}/*** double 相减

*@paramd1

*@paramd2

*@return

*/

public double sub(double d1,doubled2){

BigDecimal bd1= newBigDecimal(Double.toString(d1));

BigDecimal bd2= newBigDecimal(Double.toString(d2));returnbd1.subtract(bd2).doubleValue();

}/*** double 乘法

*@paramd1

*@paramd2

*@return

*/

public double mul(double d1,doubled2){

BigDecimal bd1= newBigDecimal(Double.toString(d1));

BigDecimal bd2= newBigDecimal(Double.toString(d2));returnbd1.multiply(bd2).doubleValue();

}/*** double 除法

*@paramd1

*@paramd2

*@paramscale 四舍五入 小数点位数

*@return

*/

public double div(double d1,double d2,intscale){//当然在此之前,你要判断分母是否为0,//为0你可以根据实际需求做相应的处理

BigDecimal bd1 = newBigDecimal(Double.toString(d1));

BigDecimal bd2= newBigDecimal(Double.toString(d2));returnbd1.divide

(bd2,scale,BigDecimal.ROUND_HALF_UP).doubleValue();

}

}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值