java.math包有两个很有用的类:BigInteger和BigDecimal,分别是任意精度的
整数运算和任意精度的浮点数运算。
1.使用静态的valueOf方法可以将普通的数值转换为大数值:
BigInteger a=BigInteger.valueOf(100);
+,-,*, / -> add,subtract,multiply ,divide方法,mod求余数
BigInteger a=BigInteger.valueOf(3);
BigInteger b=BigInteger.valueOf(8);
BigInteger c=a.add(b);//c=a+b=3+8=11
BigInteger d=c.multiply(b.add(BigInteger.valueOf(2)));//d=c*(b+2)=11*(8+2)=110
lotteryOdds=lotteryOdds *(n-i+1)/i;
大数值表示为
lotteryOdds=lotteryOdds.mutiply(BigInteger.valueOf(n-i+1)).divide(BigInteger.valueOf(i));
package com.cxy.fkJava.C7.BigDecimal;
import java.math.BigDecimal;
import java.math.RoundingMode;
/**
* 算术工具类
* @author 69497
*
*/
public class Arith {
//默认除法精度
private static final int DEFAULT_DIV_SCALE = 10;
//私有化构造器,让类无法实例化
private Arith (){
}
//加法
public static double add(double v1,double v2){
BigDecimal a1 = BigDecimal.valueOf(v1);
BigDecimal a2 = BigDecimal.valueOf(v1);
return a1.add(a2).doubleValue();
}
//减法
public static double subtract(double v1,double v2){
BigDecimal a1 = BigDecimal.valueOf(v1);
BigDecimal a2 = BigDecimal.valueOf(v1);
return a1.subtract(a2).doubleValue();
}
//乘法
public static double mul(double v1,double v2){
BigDecimal a1 = BigDecimal.valueOf(v1);
BigDecimal a2 = BigDecimal.valueOf(v1);
return a1.multiply(a2).doubleValue();
}
//除法(小数点后10位四舍五入)
public static double div(double v1,double v2){
BigDecimal a1 = BigDecimal.valueOf(v1);
BigDecimal a2 = BigDecimal.valueOf(v1);
return a1.divide(a2,DEFAULT_DIV_SCALE,RoundingMode.HALF_UP).doubleValue();
}
}