Java问题之超过数值表示范围(例如64位)结果是什么 (阶乘)
关于老师在课上所提及的这个问题 我做了验证 截图如下
只是一个简单的计算阶乘的代码 在运行时得到了如下结果
可以看到,对于部分数字如果超出范围会从64位处自动截断,而这时由于是二进制表示,首位默认是符号位,所以会认为是负数,对于过大的数字直接就成0了
在这里如果我们想进行超大数字的表示则需要其他方法
BigInteger a=BigInteger.valueOf(100);
java中提供了Big--这一类,既可以将普通数字转化为大数字
常用方法如下
BigInteger add(BigInteger other) 加
BigInteger subtract(BigInteger other)减
BigInteger multiply(BigInteger other)乘
BigInteger divide(BigInteger other)除
在这里要注意的是不能用常规的加减乘除对大数字进行运算
public class Print {
public static void main(String[] args) {
BigInteger a=BigInteger.valueOf(2);
for (int i = 0; i < 100; i++) {
a=a.multiply(BigInteger.valueOf(2));
}
System.out.println(a);//2535301200456458802993406410752
}
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理