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(); } }
