mathsubJava_java初学减法运算
展开全部
在⼤多数情况下,使⽤double和float计算的结果是准确的,但是在⼀些精度要求很⾼的系统中,这种问题是⾮常严重的。62616964757a686964616fe78988e69d8331333337393636
在《Effective Java》中提到⼀个原则,那就是float和double只能⽤来作科学计算或者是⼯程计算,但在商业计算中我们要⽤java.math.BigDecimal,通过使⽤BigDecimal类我们可以解决上述问题,实例代码如下:package ex;
import java.math.*;
public class BigDecimalDemo {
public static void main(String[] args){
System.out.println(ArithUtil.add(0.01, 0.05));
System.out.println(ArithUtil.sub(1.0, 0.42));
System.out.println(ArithUtil.mul(4.015, 100));
System.out.println(ArithUtil.div(123.3, 100));
}bigdecimal转换为integer
}
class ArithUtil{
private static final int DEF_DIV_SCALE=10;
private ArithUtil(){}
public static double add(double d1,double d2){
BigDecimal b1=new String(d1));
BigDecimal b2=new String(d2));
return b1.add(b2).doubleValue();
}
public static double sub(double d1,double d2){
BigDecimal b1=new String(d1));
BigDecimal b2=new String(d2));
return b1.subtract(b2).doubleValue();
}
public static double mul(double d1,double d2){
BigDecimal b1=new String(d1));
BigDecimal b2=new String(d2));
return b1.multiply(b2).doubleValue();
}
public static double div(double d1,double d2){
return div(d1,d2,DEF_DIV_SCALE);
}
public static double div(double d1,double d2,int scale){
if(scale<0){
throw new IllegalArgumentException("The scale must be a positive integer or zero"); }
BigDecimal b1=new String(d1));
BigDecimal b2=new String(d2));
return b1.divide(b2,scale,BigDecimal.ROUND_HALF_UP).doubleValue();
}
}

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。