package test.leecode.math;标签:3602,BigInteger,int,System,long,public,out From: https://blog.51cto.com/fansunion/6056747
import java.math.BigInteger;
/**
* int*int,long*long,都可能溢出
* @author [email protected]
*
* 2022-3-18
*/
public class IntMultiplyIntTest {
public static void main(String[] args) {
System.out.println("Integer的最大值:"+Integer.MAX_VALUE);
System.out.println("Long的最大值:"+Long.MAX_VALUE);
System.out.println("大数相乘,需要用BigInteger:"+new BigInteger("60070").multiply(new BigInteger("60070")));
System.out.println("大数相乘,用BigInteger封装的方法:"+big(60070));
System.out.println("大数相乘,用int*int会溢出:"+60070 * 60070);
System.out.println("小数相乘,用int*int不溢出:"+6007 * 6007);
}
public static BigInteger big(int k) {
return new BigInteger(String.valueOf(k)).multiply(new BigInteger(String.valueOf(k)));
}
//输入类型为long,可以支持更大的k;但是如果k太大,也会溢出
public long test1(long k) {
//int的最大值也太小了,2147483647,2个万相乘就是亿了
return (1 + k) * k / 2;
}
//返回值用long,也会越界
public long test2(int k) {
return (1 + k) * k / 2;
}
//越界了
public int test3(int k) {
//int的最大值也太小了,2147483647,2个万相乘就是亿了
return (1 + k) * k / 2;
}
}