Java解决高精度计算问题

学习参考于这几个博客:

http://blog.csdn.net/guo_love_peng/article/details/6634150

http://blog.csdn.net/hqd_acm/article/details/5751686

http://blog.csdn.net/w00w12l/article/details/7290750


自己总结一下:

1.输入输出:

先声明一个 Scanner 类型变量。

Scanner cin=new Scanner(new BufferedInputstream(System.in));

对于各种类型变量: int a,double b,String c,BigInteger d;

a=cin.nextInt();b=cin.nextDouble();c=cin.nextLine();d=cin.nextBigInteger();


输出 System.out.println() System.out.printf()  等于c++中printf();


2.BigInteger ,BigDecimal

BigInteger 就是高精度整数,常见初始化,

BigInteger a= new  BigInteger("1111111");

BigInteger a=BigInteger.valueOf(111111);

Java进制转换也很方便:

BigInteger a=cin.nextBigInteger(2); //高精度数a以二进制读入.

如果要将一个大数转换成其他进制形式的字符串 使用cin.toString(2);//将它转换成2进制表示的字符串
常见处理还有:

String st = Integer.toString(num, base); // 把num当做10进制的数转成base进制的st(base <= 35).   

int num = Integer.parseInt(st, base); // 把st当做base进制,转成10进制的int(parseInt有两个参数,第一个为要转的字符串,第二个为说明是什么进制).      

BigInter m = new BigInteger(st, base); // st是字符串,base是st的进制. 

基本函数

1.valueOf(parament); 将参数转换为制定的类型

   比如 int a=3;

       BigInteger b=BigInteger.valueOf(a);

     则b=3;

         String s=”12345”;

       BigInteger c=BigInteger.valueOf(s);

       则c=12345;

 

2.add(); 大整数相加

   BigInteger a=new BigInteger(“23”);

   BigInteger b=new BigInteger(“34”);

a.add(b);

3.subtract(); 相减

4.multiply(); 相乘

5.divide();    相除取整

6.remainder(); 取余

7.pow();   a.pow(b)=a^b

8.gcd();   最大公约数

9.abs(); 绝对值

10.negate(); 取反数

11.mod(); a.mod(b)=a%b=a.remainder(b);

12.max(); min();

13.punlic int comareTo();

14.boolean equals(); 是否相等

BigDecima 用法也差不多。

补充
       BigDecimal a;  a=a.stripTrailingZeros();//消掉小数a的前导0
         String d=a.toPlainString();  //高精度数a的朴素字符串表示,防止出现科学计数法的形式.
       String d;
if(d.charAt(0)=='0') d=d.substring(1); //这里d.charAt(0)相当于d[0]  的java表示形式.




你可能感兴趣的:(Java解决高精度计算问题)