黑马程序员: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类。