用java写计算器中两个大数作除法的思路算法是什么?
比如被除数是一个20位的数,除数是一个9位的数PS:可以用连续减法的方法得出结果,但要花几分钟才算的出结果,连续减法只适合两个数都不是特别大的情况几秒钟就能得出结果,但现...
比如被除数是一个20位的数,除数是一个9位的数
PS:可以用连续减法的方法得出结果,但要花几分钟才算的出结果,连续减法只适合两个数都不是特别大的情况 几秒钟就能得出结果,但现在这种情况两个数都非常大 要花几分钟才能出结果,谁能给我一个思路能提高计算的效率,大数除法具体应该怎么写算法 展开
PS:可以用连续减法的方法得出结果,但要花几分钟才算的出结果,连续减法只适合两个数都不是特别大的情况 几秒钟就能得出结果,但现在这种情况两个数都非常大 要花几分钟才能出结果,谁能给我一个思路能提高计算的效率,大数除法具体应该怎么写算法 展开
2个回答
展开全部
BigDecimal类可以实现
import java.math.BigDecimal;
/**
* 提供(相对)精确的除法运算。当发生除不尽的情况时,由scale参数指
* 定精度,以后的数字四舍五入。
* @param v1 被除数
* @param v2 除数
* @param scale 表示表示需要精确到小数点以后几位。
* @return 两个参数的商
*/
public static double div(double v1,double v2,int scale){
BigDecimal b1 = new BigDecimal(Double.toString(v1));
BigDecimal b2 = new BigDecimal(Double.toString(v2));
return b1.divide(b2,scale,BigDecimal.ROUND_HALF_UP).doubleValue();
}
import java.math.BigDecimal;
/**
* 提供(相对)精确的除法运算。当发生除不尽的情况时,由scale参数指
* 定精度,以后的数字四舍五入。
* @param v1 被除数
* @param v2 除数
* @param scale 表示表示需要精确到小数点以后几位。
* @return 两个参数的商
*/
public static double div(double v1,double v2,int scale){
BigDecimal b1 = new BigDecimal(Double.toString(v1));
BigDecimal b2 = new BigDecimal(Double.toString(v2));
return b1.divide(b2,scale,BigDecimal.ROUND_HALF_UP).doubleValue();
}
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询