62,634
社区成员




public class Test {
public static void main(String[] args) {
System.out.println(add(1.0023D,2.03032,3));
System.out.println(subtract(1.0023D,2.03032,3));
System.out.println(multiply(1.0023D,2.03032,3));
System.out.println(divide(40,3,3));
}
public static double add(double d1, double d2, int scale){
BigDecimal b1 = new BigDecimal(d1);
String totStr = b1.add(new BigDecimal(d2)).toString();
int index = totStr.indexOf(".");
return b1.add(new BigDecimal(d2), new MathContext(scale + index, RoundingMode.HALF_UP)).doubleValue();
}
public static double subtract(double d1, double d2, int scale){
BigDecimal b1 = new BigDecimal(d1);
String totStr = b1.subtract(new BigDecimal(d2)).toString();
int index = totStr.indexOf(".");
return b1.subtract(new BigDecimal(d2), new MathContext(scale + index, RoundingMode.HALF_UP)).doubleValue();
}
public static double multiply(double d1, double d2, int scale){
BigDecimal b1 = new BigDecimal(d1);
String totStr = b1.multiply(new BigDecimal(d2)).toString();
int index = totStr.indexOf(".");
return b1.multiply(new BigDecimal(d2), new MathContext(scale + index, RoundingMode.HALF_UP)).doubleValue();
}
public static double divide(double d1, double d2, int scale){
BigDecimal b1 = new BigDecimal(d1);
return b1.divide(new BigDecimal(d2), scale, RoundingMode.HALF_UP).doubleValue();
}
}