黑马程序员:Java培训、Android培训、iOS培训、.Net培训

           黑马程序员--百亿级计算器

一、需要考虑的问题

     byte的范围为:-128 ~ 127

     int 的范围为:2的31次方,大概 20亿

     double 的范围为:2的63次方,大概 800亿

     有如下实例:

       int a = Integer.MAX_VALUE;

       int b = Integer.MAX_VALUE;

       int sum = a + b;

       System.out.println(“sum = “ +sum);

     该实例的结果不会得到我们所需要的结果,为什么?因为在进行sum=a+b运算是发生了越界,而在计算机中,两个数值的运算结果不能超过计算机中的该类型的数值范围,并且越界的部位,计算机会舍弃。显然,在该题中,100亿*100亿的结果是java中所有的类型都无法保存的。

二、功能设计

    1、设计一个类,其内部有两个成员变量,一个表示符号,另一个是字节数组,用来表示数值的二进制数。

    2、有一个构造方法,把一个包含有多位数值的字符串转换到内部的符号和字节数组中。

    3、提供加减乘除的功能。

三、实现

    public class BigInteger{

         int sign;

         byte[] val;

         public BigInteger(String val){

             sign = ;

             val= ;

         }

        

         Public BigIteger add(BigInteger other){

           

         }

         

         Public BigIteger subtract(BigInteger other){

           

         }

 

         Public BigIteger multiply(BigInteger other){

           

         }

 

         Public BigIteger divide(BigInteger other){

           

         }

     }

         

     //详细代码请查看java.math.BigInteger类。