java.math.BigInteger系列教程(四)BigInteger的诞生原因

为什么java里面要出现BigInteger类型呢?相信很多人有这个疑问,其实原因很简单,它可以表达更大范围的数值,远远比long表示的最大值还要大的多数。在整数类型里面,long可以表达最大值,如下所示:

1
2
3
4
5
6
7
public class Test
{
public static void main(String[] args)
{
System.out.println(Long.MAX_VALUE);
}
}

结果为:9223372036854775807
  而使用BigInteger,则可以表示更大的值,理论上只要你内存足够大,就能,如下面的例子:

 
1
2
3
4
5
6
7
8
9
10
public class Test
{
public static void main(String[] args)
{
BigInteger a= BigInteger.valueOf(9223372036854775807L);
BigInteger b= BigInteger.valueOf(9223372036854775807L);
BigInteger c=a.add(b);
System.out.println(c.toString());
}
}

结果为:18446744073709551614

  因为BigInteger没有重载"+","-","*",“/”, “%”这五个运算操作符,是不能直接进行数据运算的,需要调用它的相应方法:add,subtract,multiply,divide,remainder。

Java版本的是:

package t0816;

import java.math.BigInteger;
public final class BigN {
public static BigInteger multiply(BigInteger m,int n) {
BigInteger sn = new BigInteger(Integer.toString(n));
BigInteger sqy = m.multiply(sn); //大数据的加减乘除用的是add、subtract、multiply、divide,remainder。
return sqy;
}
public static String calcNN(int n) {
if(n >= 0){
BigInteger one = new BigInteger(Integer.toString(1)); //1的初始化
for(int i=1;i <= n;i++) {
one = multiply(one,i); //调用上面的累成函数;大数据的累成
}
return one.toString();
}
else return null;
} public static void main(String arg[]) { //主函数
System.out.println(calcNN(13)); //这里直接装的13;
}
}

输出:6227020800

HW—可怕的阶乘n!__注意大数据函数的使用BigInteger的更多相关文章

  1. 常用API(包装类、System、Math、Arrays、大数据运算)

    常用API 今日内容介绍 u 基本类型包装类 u System u Math u Arrays u BigInteger u BigDecimal 第1章 基本类型包装类 大家回想下,在第二天我们学习 ...

  2. java基础(17):包装类、System、Math、Arrays、大数据运算

    1. 基本类型包装类 大家回想下,在第三篇文章中我们学习Java中的基本数据类型时,说Java中有8种基本的数据类型,可是这些数据是基本数据,想对其进行复杂操作,变的很难.怎么办呢? 1.1 基本类型 ...

  3. Random随机类(11选5彩票)BigInteger大数据类(华为面试题1000的阶乘)

    先上Java Web图 为了简化叙述,只写Java代码,然后控制台输出 使用[Random类]取得随机数 import java.util.Random; public class Fir { pub ...

  4. 【重磅推荐】腾讯Bugly2015年移动应用质量大数据报告

    2015年,随着移动智能设备的普及,移动端用户的增速明显放缓:相比之下,由于云服务.众筹平台.推广平台等基础设施和服务的不断改善,极大降低了创业的门槛,越来越多人投身于移动应用的创新创业中. 想让用户 ...

  5. Top100Summit全球案例研究峰会第一天总结——云计算和大数据

    很荣幸受邀参加Top100Summit全球软件案例研究峰会,这次的大会主题是<技术推动商业变革>,组委会从全国投稿的460多件案例中甄选出100件具有代表价值的案例,进行为期4天的分享,第 ...

  6. 从打车软件你能想到多少?盈利模式?商机?大数据?移动互联网蛋糕?生活方式改变withApp?

    物联网.云服务.大数据.. 淘宝.12306.卡通...一个产品改变一次生活方式. 打车app,无疑是改变生活方式的又一个产品.从打车软件,你能看到什么? 个人认为,打车软件值得各种投资方斥资,最重要 ...

  7. 开发入门,学Java还是学大数据?

    经常有人问,我想学习开发,到底是学Java好还是学大数据好?或者是,学习大数据还有必要学Java吗?      依我说,这个提问的标准答案是:两者都学.      先来甩两张图.      一张是腾讯 ...

  8. 这份书单,给那些想学Hadoop大数据、人工智能的人

    一.简单科普类 (文末附下载链接) 1.<人工智能:李开复谈AI如何重塑个人.商业与社会的未来图谱2> 作者:李开复,王咏刚 推荐理由:文章写得一般,但李开复和王永刚老师总结的还可以,算国 ...

  9. 腾讯Bugly2015年移动应用质量大数据报告 原 荐

    在这份报告中,腾讯Bugly和腾讯优测会对2015年Android和iOS平台上的应用质量进行详细盘点,帮助你了解你的产品质量在行业中处于什么位置. 首先,让我们从整体上,回顾一下2015年度的应用和 ...

随机推荐

  1. Oracle-Oracle10 数据空间建立,导入,导出--oracle10g 删除步骤

    --以system/manager身份登录SQLPlus,并执行 ========================管理员登陆==================================== 登 ...

  2. Property cannot be found on forward class object?

    I have a UIView and I'm trying to set its layer properties. self.colorSwatch = [[UIView alloc] initW ...

  3. swift 内存管理,WEAK 和 UNOWNED

    因为 Playground 本身会持有所有声明在其中的东西,因此本节中的示例代码需要在 Xcode 项目环境中运行.在 Playground 中可能无法得到正确的结果. 不管在什么语言里,内存管理的内 ...

  4. C# 产生随机密码

    using System.Web.Security var rawPassword = System.Web.Security.Membership.GeneratePassword(10,1) re ...

  5. 发布maven的web项目,tomcat显示已启动,但是访问出错

    sts中如果是maven的web工程,一定要先进行maven install,再发布工程,否则不会出任何错误,tomcat还访问不了

  6. jq向上无缝滚动

    <!-- -------------摇奖排行榜--------------- --> <div class="Top_Record"> <div cl ...

  7. Ubuntu下非常给力的下载工具

    Windows下的下载工具--迅雷,之所以下载速度快,乃是它能搜索资源.为己所用,而不是仅仅从原始地址这单一资源处下载. Ubuntu下也有类似的工具,那就是aira2. aira2是一个命令行下载工 ...

  8. 有关AES加密的问题

    遇到一个项目,需要用AES加密密码,android的已经写好了,java源码: private static final String AES_OPTIONS = "AES/ECB/PKCS ...

  9. Codeforces Round #324 (Div. 2) C. Marina and Vasya 贪心

    C. Marina and Vasya Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/contest/584/pr ...

  10. iOS之宏定义#define

    最基本的宏定义用法 #define aaa bbb 表示用aaa替换bbb的内容. 宏作用范围 宏的作用范围是在当前文件内, 如果需要作用于其他类(如在类b调用类a已定义宏),那么需要在类b引入类a的 ...