java biginteger 运算_Java大数字运算之BigInteger 原创

在 Java中,有许多数字处理的类,比如Integer 类。但是Integer 类有一定的局限性,下面我们就来看看比 Integer 类更厉害的一个,BigInteger类。

BigInteger类型的数字范围较 Integer 类型的数字范围要大得多。我们都知道 Integer 是 Int 的包装类,int 的最大值为 231-1,如果要计算更大的数字,使用Integer 数据类型就无法实现了,所以 Java 中提供了BigInteger 类来处理更大的数字。 BigInteger 支持任意精度的整数,也就是说在运算中 BigInteger 类型可以准确地表示任何大小的整数值而不会丢失任何信息。

在 BigInteger类中封装了多种操作!除了基本的加减乘除操作之外,还提供了绝对值、相反数、最大公约数以及判断是否为质数等操作。

使用BigInteger 类,可以实例化一个BigInteger 对象,并自动调用相应的构造函数。BigInteger 类具有很多构造函数,但最直接的一种方式是参数以字符串形式代表要处理的数字。

语法如下:

public BigInteger(String val)

其中,val 是十进制字符串。

如果将 2 转换为 BigInteger 类型,可以使用以下语句进行初始化操作:

BigInteger twoInstance = new BigInteger ("2");

一旦创建了对象实例,就可以调用 BigInteger 类中的一些方法进行运算操作,包括基本的数学运算和位运算以及一些取相反数、取绝对值等操作。下面是 BigInteger 类几种常用的运算方法。

public BigInteger add(BigInteger val):做加法运算

public BigInteger subtract(BigInteger val):做减法运算

public BigInteger multiply(BigInteger val):做乘法运算

public BigInteger divide(BigInteger val):做除法运算

public BigInteger remainder(BigInteger val):做取余操作

public BigInteger pow(int exponet):进行取参数的 exponet 次方操作

public BigInteger negate():取相反数

public BigInteger shiftLegt(int n):将数字左移 n 位,如果 n 为负数,做右移操作

public BigInteger shiftRight(int n):将数字右移 n 位,如果 n 为负数,做左移操作

public int compareTo(BigInteger val):做数字比较操作

public BigInteger max(BigInteger val):返回较大的数值

下面是一个实例。在项目中创建一个类,在类的主方法中创建 BigInteger 类的实例对象,调用该对象的各种方法实现大整数的加减乘除和其他运算,并输出运行结果。

public static void main(String[] args) {

BigInteger bigInstance = new BigInteger("4"); //实例化一个大数字

//取该大数字加2的操作

System.out.println("加法操作:"+

bigInstance.add(new BigInteger("2")));

//取该大数字减2的操作

System.out.println("减法操作:"+

bigInstance.subtract(new BigInteger("2")));

//取该大数字乘以2的操作

System.out.println("乘法操作:"+

bigInstance.multiply(new BigInteger("2")));

//取该大数字除以2的操作

System.out.println("除法操作:"+

bigInstance.divide(new BigInteger("2")));

//取该大数字除以3的商

System.out.println("取商:"+

bigInstance.divideAndRemainder(new BigInteger("3"))[0]);

//取该大数字除以3的余数

System.out.println("取余数:"+

bigInstance.divideAndRemainder(new BigInteger("3"))[1]);

//取该大数字的2次方

System.out.println("做2次方操作:"+

bigInstance.pow(2));

//取该大数字的相反数

System.out.println("取相反数操作:"+

bigInstance.negate());

}

}

以上就是关于 BigInteger 类的详解和实例分析,喜欢的朋友请继续关注聚米学院。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/562328.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

《零基础》MySQL 数据类型(八)

MySQL中定义数据字段的类型对你数据库的优化是非常重要的。 MySQL支持多种类型,大致可以分为三类:数值、日期/时间和字符串(字符)类型。 数值类型 MySQL支持所有标准SQL数值数据类型。 这些类型包括严格数值数据类型(INTEGER、SMALLINT、DECIMAL和NUM…

java线程生命周期_详解java线程的生命周期

详解java线程的生命周期与人有生老病死一样,线程也同样要经历开始(等待)、运行、挂起和停止四种不同的状态。下面百分网小编主要介绍了java 线程的生命周期详解的相关资料,有需要的朋友可以参考!想了解更多相关信息请持续关注我们应届毕业生考试网!一个线…

《零基础》MySQL 创建数据表(九)

创建MySQL数据表需要以下信息: 表名表字段名定义每个表字段 语法 以下为创建MySQL数据表的SQL通用语法: CREATE TABLE table_name (column_name column_type); 以下例子中我们将在 RUNOOB 数据库中创建数据表runoob_tbl: CREATE TABLE IF…

java eventbus 原理_EventBus原理解析

前言EventBus的核心思想是观察者模式 (生产/消费者编程模型) 。通过前面的文章我们已经知道,如何使用eventBus了。我们需要先定义一个Observer(前文中的EventListener类),然后将其注册到eventBus里,通过 Subscribe 定义消息回调函数。那我们先…

基于Java jsp+servlet超市订单管理平台设计和实现【建议收藏】

🍅 作者主页:Java李杨勇 🍅 简介:Java领域优质创作者🏆、Java李杨勇公号作者✌ 简历模板、学习资料、面试题库、技术互助【关注我,都给你】 🍅 欢迎点赞 👍 收藏 ⭐留言 &#x1f…

想推翻JAVA的统治? 呵洗洗睡吧

作者:暗灭 链接:https://www.zhihu.com/question/268129932/answer/335700782 来源:知乎 已获得作者同意 本文章纯属娱乐:欢迎大家评论区留言娱乐 视频版: 2021-06-10 22-12-02文字版: “java越来越过份…

jsp java循环读取json_JAVA JSON遍历问题,求解(内附代码)

问题描述:package testJSON;import net.sf.json.JSONArray;import net.sf.json.JSONObject;public class TestJson2 {public static void main(String[] args) {String str "{"data":[{"id":"1","name":"name1"},&quo…

《零基础》MySQL删除数据表(十)

MySQL中删除数据表是非常容易操作的,但是你在进行删除表操作时要非常小心,因为执行删除命令后所有数据都会消失。 语法 以下为删除MySQL数据表的通用语法: DROP TABLE table_name ; 在命令提示窗口中删除数据表 在mysql>命令提示窗口中…

php连接mysql开发环境_PHP开发环境搭建及常用的数据库操作

PHP开发环境搭建及常用的数据库操作常见的web服务器:httpd(Apache)、nginxPHPTomcat:jsphtmlwin:IIS客户端:IE、firefox、chrome、手机浏览器(Browser)PHP开发环境:LAMPLinux Apache Mysql PHP或者LNMPLinux Nginx Mys…

《零基础》MySQL 查询数据(十二)

MySQL 数据库使用SQL SELECT语句来查询数据。 你可以通过 mysql> 命令提示窗口中在数据库中查询数据,或者通过PHP脚本来查询数据。 语法 以下为在MySQL数据库中查询数据通用的 SELECT 语法: SELECT column_name,column_name FROM table_name [WHE…

java 反射实现 工厂模式_java – 用反射实现工厂模式

我正在实施工厂模式这是我的工厂类:class ProductFactory{private HashMap m_RegisteredProducts new HashMap();public void registerProduct (String productID, Class productClass){m_RegisteredProducts.put(productID, productClass);}public Product create…

《零基础》MySQL WHERE 子句(十三)

语法 以下是 SQL SELECT 语句使用 WHERE 子句从数据表中读取数据的通用语法: SELECT field1, field2,...fieldN FROM table_name1, table_name2... [WHERE condition1 [AND [OR]] condition2..... 查询语句中你可以使用一个或者多个表,表之间使用逗号…

《零基础》MySQL UPDATE 更新(十四)

语法 以下是 UPDATE 命令修改 MySQL 数据表数据的通用 SQL 语法: UPDATE table_name SET field1new-value1, field2new-value2 [WHERE Clause] 你可以同时更新一个或多个字段。你可以在 WHERE 子句中指定任何条件。你可以在一个单独表中同时更新数据。 当你需要更…

class h5 点击后样式变化_【php】JQuery怎么实现页面刷新后保留鼠标点击addclass的样式?...

刚开始是这个效果鼠标点击之后变成了这个效果要保证实现 a 标签点击链接一个新的网址同时也要保证效果达到我目前写的网站代码 可以下载http://115.com/file/c2zlhblv看看回答感谢所以回答问题的人。比较好的办法是使用url传参数,然后根据参数判断是否有必要显示cla…

《零基础》MySQL DELETE 语句(十五)

语法 以下是 SQL DELETE 语句从 MySQL 数据表中删除数据的通用语法: DELETE FROM table_name [WHERE Clause] 如果没有指定 WHERE 子句,MySQL 表中的所有记录将被删除。你可以在 WHERE 子句中指定任何条件您可以在单个表中一次性删除记录。 当你想删除…

java 获得站点地址_JavaWeb项目里面的路径获取方法总结

仅为资源搬运,个人还未充分理解...request.getRealPath不推荐使用request.getRealPath("") 这个方法已经不推荐使用了,那代替它的是什么方法 Deprecated. As of Version 2.1 of the Java Servlet API, use ServletContext.getRealPath(java.la…

《零基础》MySQL LIKE 子句(十六)

我们知道在 MySQL 中使用 SQL SELECT 命令来读取数据, 同时我们可以在 SELECT 语句中使用 WHERE 子句来获取指定的记录。 WHERE 子句中可以使用等号 来设定获取数据的条件,如 "runoob_author RUNOOB.COM"。 但是有时候我们需要获取 runoob…

《零基础》MySQL UNION 操作符(十七)

描述 MySQL UNION 操作符用于连接两个以上的 SELECT 语句的结果组合到一个结果集合中。多个 SELECT 语句会删除重复的数据。 语法 MySQL UNION 操作符语法格式: SELECT expression1, expression2, ... expression_n FROM tables [WHERE conditions] UNION [ALL …

《零基础》MySQL 排序(十八)

我们知道从 MySQL 表中使用 SQL SELECT 语句来读取数据。 如果我们需要对读取的数据进行排序,我们就可以使用 MySQL 的 ORDER BY 子句来设定你想按哪个字段哪种方式来进行排序,再返回搜索结果。 语法 以下是 SQL SELECT 语句使用 ORDER BY 子句将查询…

java序列化错在哪里_Spark序列化错误:java.io.NotSerializableException

由于spark算子用到的class没有实现序列化,报错如下所示15/11/23 14:43:47 ERROR Executor: Exception in task 0.0 in stage 4.0 (TID 4)java.io.NotSerializableException: EntityMentionSerialization stack:- object not serializable (class: EntityMention, va…