package test.leecode.math;
import java.math.BigInteger;
/**
* int*int,long*long,都可能溢出
* @author wen.lei@brgroup.com
*
* 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;
}
}
3602、int*int,long*long,都可能溢出
原创
©著作权归作者所有:来自51CTO博客作者FansUnion的原创作品,请联系作者获取转载授权,否则将追究法律责任
下一篇:3601、排列硬币

提问和评论都可以,用心的回复会被更多人看到
评论
发布评论
相关文章
-
__int64 与long long 的区别
//为了和DSP兼容,TSint64和TUint64设置成TSint40和TUint40一样的数 //结果VC中还
编译器 linux gcc microsoft 平台 -
int和long计算问题
关于int值和long值之间的转换
关于int值和long值之间的转换