首页 > 代码库 > Java的大数操作分为BigInteger和BigDecimal
Java的大数操作分为BigInteger和BigDecimal
Java的大数操作分为BigInteger和BigDecimal,但这两给类是分开使用的,有时候在编程的时候显得略微繁琐,现在编写了一个将二者合二为一的大数操作类。
大数操作类代码如下:
1 package blog; 2 3 import java.math.BigDecimal; 4 import java.math.BigInteger; 5 import java.math.RoundingMode; 6 7 /** 8 * 9 * @author 瓦尔登湖畔的小木屋 10 * BigNumberOperation封装了对十进制大数整数和大数浮点数的四则运算的操作 11 */ 12 public class BigNumberOperation { 13 /** 14 * 对加法的封装操作 15 */ 16 public static BigInteger add(BigInteger number1, BigInteger number2) { 17 return number1.add(number2); 18 } 19 20 public static BigDecimal add(BigDecimal number1, BigDecimal number2) { 21 return number1.add(number2); 22 } 23 24 public static BigDecimal add(BigDecimal number1, BigInteger number2) { 25 return number1.add(new BigDecimal(number2)); 26 } 27 28 public static BigDecimal add(BigInteger number1, BigDecimal number2) { 29 return new BigDecimal(number1).add(number2); 30 } 31 32 /** 33 * 对减法的封装操作 34 */ 35 public static BigInteger subtract(BigInteger number1, BigInteger number2) { 36 return number1.subtract(number2); 37 } 38 39 public static BigDecimal subtract(BigDecimal number1, BigDecimal number2) { 40 return number1.subtract(number2); 41 } 42 43 public static BigDecimal subtract(BigDecimal number1, BigInteger number2) { 44 return number1.subtract(new BigDecimal(number2)); 45 } 46 47 public static BigDecimal subtract(BigInteger number1, BigDecimal number2) { 48 return new BigDecimal(number1).subtract(number2); 49 } 50 51 /** 52 * 对乘法的封装操作 53 */ 54 public static BigInteger multiply(BigInteger number1, BigInteger number2) { 55 return number1.multiply(number2); 56 } 57 58 public static BigDecimal multiply(BigDecimal number1, BigDecimal number2) { 59 return number1.multiply(number2); 60 } 61 62 public static BigDecimal multiply(BigDecimal number1, BigInteger number2) { 63 return number1.multiply(new BigDecimal(number2)); 64 } 65 66 public static BigDecimal multiply(BigInteger number1, BigDecimal number2) { 67 return new BigDecimal(number1).multiply(number2); 68 } 69 70 /** 71 * 对除法的封装 72 * 大数浮点数时,结果默认保留10位小数,也可以通过count指定保留小数的位数 73 * 对于最末一位的取舍采取RoundingMode.HALF_EVEN模式 74 */ 75 public static BigInteger divide(BigInteger number1, BigInteger number2) { 76 return number1.divide(number2); 77 } 78 79 public static BigDecimal divide(BigDecimal number1, BigDecimal number2) { 80 return number1.divide(number2, 10, RoundingMode.HALF_EVEN); 81 } 82 83 public static BigDecimal divide(BigDecimal number1, BigDecimal number2, int count) { 84 return number1.divide(number2, count, RoundingMode.HALF_EVEN); 85 } 86 87 public static BigDecimal divide(BigDecimal number1, BigInteger number2) { 88 return number1.divide(new BigDecimal(number2), 10, RoundingMode.HALF_EVEN); 89 } 90 91 public static BigDecimal divide(BigDecimal number1, BigInteger number2, int count) { 92 return number1.divide(new BigDecimal(number2), count, RoundingMode.HALF_EVEN); 93 } 94 95 public static BigDecimal divide(BigInteger number1, BigDecimal number2) { 96 return new BigDecimal(number1).divide(number2, 10