//对于浮点数相减,有时结果是正确的,有时结果是错误的
import java.math.BigDecimal;
public class LiP25 {
public static void main(String[] args) {
double result=6.110-2.600;
System.out.println("6.110-2.600="+result); //错误结果3.5100000000000002
//方法一:使用BigDecimal类解决浮点数相减结果错误
BigDecimal num1=new BigDecimal("6.110"); //一定要用String类型的形参构造方法
BigDecimal num2=new BigDecimal("2.600");
BigDecimal num3=num1.subtract(num2);
double value=num3.doubleValue();
System.out.println("6.110-2.600="+value); //正确结果3.51
//方法二:将待减的数各乘以一个倍数,并将结果强制转换为int或long型,然后相减
double dbNum1=6.110;
double dbNum2=2.600;
long lngNum1=(long)(dbNum1*1000); //注意不是(long)dbNum1*1000
long lngNum2=(long)(dbNum2*1000);
long lngValue=lngNum1-lngNum2;
double dbValue=(double)lngValue/1000;
System.out.println("6.110-2.600="+dbValue);
}
}
分享到:
相关推荐
BigDecimal工具类.docx
BigDecimal运算Jar包。支持sin、cos、tan、asin、acos、atan、pow、sqrt、cbrt、root、log10、log、ln、exp、sinh、cosh、tanh、asinh、acosh、atanh、deg、rad
主要介绍了Java Bigdecimal使用原理详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
是不是还在为多精度小数运算烦恼 这个满足你一切要求 项目中需要对金钱进行运算,为了使计算结果更准确,故使用bigDecimal工具来实现
bigdecimal加减乘除运算
BigDecimal 使用方法小节:包含构造方法及和、差、商、积等运算方式
下面小编就为大家带来一篇Java中BigDecimal的基本运算(详解)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
java丢失精度,bigdecimal加减乘除
BigDecimal 由任意精度的整数非标度值 和32 位的整数标度 (scale) 组成。如果为零或正数,则标度是小数点后的位数。如果为负数,则将该数的非标度值乘以 10 的负scale 次幂。