Java大数の操作
10063 ワード
Javaの大数に対する操作のまとめ
1、BigInteger:大きい整数に対して、文字列方式で人を伝える
実行結果:
2、BigDecimal:大きな浮動小数点数に対して、文字列で入力する
実行結果:
まとめ:大数を文字列で伝える場合は、'+-*/'ではなく、提供された加減乗除方法を再利用してデータを操作します.
1、BigInteger:大きい整数に対して、文字列方式で人を伝える
- import java.math.BigInteger ;
- public class BigIntegerDemo01{
- public static void main(String args[]){
- BigInteger bi1 = new BigInteger("123456789") ; // BigInteger
- BigInteger bi2 = new BigInteger("987654321") ; // BigInteger
- System.out.println(" :" + bi2.add(bi1)) ; //
- System.out.println(" :" + bi2.subtract(bi1)) ; //
- System.out.println(" :" + bi2.multiply(bi1)) ; //
- System.out.println(" :" + bi2.divide(bi1)) ; //
- System.out.println(" :" + bi2.max(bi1)) ; //
- System.out.println(" :" + bi2.min(bi1)) ; //
- BigInteger result[] = bi2.divideAndRemainder(bi1) ; //
- System.out.println(" :" + result[0] +
- "; :" + result[1]) ;
- }
- };
実行結果:
- :1111111110
- :864197532
- :121932631112635269
- :8
- :987654321
- :123456789
- :8; :9
2、BigDecimal:大きな浮動小数点数に対して、文字列で入力する
- import java.math.* ;
- class MyMath{
- public static double add(double d1,double d2){ //
- BigDecimal b1 = new BigDecimal(d1) ;
- BigDecimal b2 = new BigDecimal(d2) ;
- return b1.add(b2).doubleValue() ;
- }
- public static double sub(double d1,double d2){ //
- BigDecimal b1 = new BigDecimal(d1) ;
- BigDecimal b2 = new BigDecimal(d2) ;
- return b1.subtract(b2).doubleValue() ;
- }
- public static double mul(double d1,double d2){ //
- BigDecimal b1 = new BigDecimal(d1) ;
- BigDecimal b2 = new BigDecimal(d2) ;
- return b1.multiply(b2).doubleValue() ;
- }
- public static double div(double d1,double d2,int len){ //
- BigDecimal b1 = new BigDecimal(d1) ;
- BigDecimal b2 = new BigDecimal(d2) ;
- return b1.divide(b2,len,BigDecimal.ROUND_HALF_UP).doubleValue() ;
- }
- public static double round(double d,int len){ //
- BigDecimal b1 = new BigDecimal(d) ;
- BigDecimal b2 = new BigDecimal(1) ;
- return b1.divide(b2,len,BigDecimal.ROUND_HALF_UP).doubleValue() ;
- }
- };
-
- public class BigDecimalDemo01{
- public static void main(String args[]){
- System.out.println(" :" + MyMath.round(MyMath.add(10.345,3.333),1)) ;
- System.out.println(" :" + MyMath.round(MyMath.sub(10.345,3.333),3)) ;
- System.out.println(" :" + MyMath.round(MyMath.mul(10.345,3.333),2)) ;
- System.out.println(" :" + MyMath.div(10.345,3.333,3)) ;
- }
- };
実行結果:
- :13.7
- :7.012
- :34.48
- :3.104
まとめ:大数を文字列で伝える場合は、'+-*/'ではなく、提供された加減乗除方法を再利用してデータを操作します.