java 大数基本操作
2018-10-29 15:32:20来源:博客园 阅读 ()
导言:
计算机中数字的表示范围是有一定的限制的,像Java中,常用的数据类型,如int、double等数据类型表示的范围都是有限的,当我们要计算的数字,其位数达到成百上千时,这些数据类型无法满足我们的需求,C语言中我们可以使用数组来储存位数,再对两个数组进行相应的运算;Java中为了处理大整数的运算,提供了一种数据类型:BigInteger,BigDecimal,它能存储任意位数的大数,并提供对它们进行操作的方法。
说明:
BigInteger 和 BigDecimal 是位于java.math 包下的两个类,具体摘要如下:
BigDecimal | 不可变的、任意精度的有符号十进制数。任意精度小数 |
BigInteger | 不可变的任意精度的整数。任意精度整数 |
BigInteger基本运算:
import java.math.BigInteger; import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); BigInteger one = scanner.nextBigInteger(); BigInteger two = scanner.nextBigInteger(); System.out.println("大数相加:" + one.add(two)); System.out.println("大数相减:" + one.subtract(two)); System.out.println("大数相乘:" + one.multiply(two)); System.out.println("大数相除:" + one.divide(two)); scanner.close(); } }
BigInteger的基本操作
方法 |
类型 | 描述 |
public BigInteger add(BigInteger val) |
普通 | 将两个大数相加 |
public BigInteger subtract(BigInteger val) |
普通 | 将两个大数相减 |
public BigInteger multiply(BigInteger val) |
普通 | 将两个大数相乘 |
public BigInteger divide(BigInteger val) |
普通 | 将两个大数相除 |
public BigInteger max(BigInteger val) |
普通 | 返回两个大数中的最大值 |
public BigInteger min(BigInteger val) |
普通 | 返回两个大数中的最小值 |
public BigInteger[] divideAndRemainder(BigInteger val) |
普通 | 除发操作,数组的第一个元素为除法的商,第二个元素为除法的余数 |
public int compareTo(BigInteger val) |
普通 | 当此 BigInteger 在数值上小于、等于或大于 val 时,返回 -1,0,或 1。 |
public boolean equals(Object x) |
普通 | 当且仅当指定的 Object 是一个其值在数字上等于此 BigInteger 的 BigInteger 时,返回 true。 |
更多方法实现请看api文档:http://tool.oschina.net/apidocs/apidoc?api=jdk-zh
BigDecimal基本操作:
BigDecimal 与 BigInteger 基本上操作方法都相同,加减乘除基本相似
import java.math.BigDecimal; import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); while (scanner.hasNext()) { BigDecimal one = scanner.nextBigDecimal(); BigDecimal two = scanner.nextBigDecimal(); System.out.println(one.compareTo(two)); System.out.println(one.equals(two)); } scanner.close(); } }
输入输出数据如下:
000000000000000001 1 0 true 00000000000001.0 1 0 false 1.0 1 0 false
compareTo:值相等但具有不同标度的两个 BigDecimal 对象(如,2.0 和 2.00)被认为是相等的。当此 BigDecimal 在数字上小于、等于或大于 val 时,返回 -1、0 或 1。
equals:仅当两个 BigDecimal 对象的值和标度都相等时,此方法才认为它们相等(因此通过此方法进行比较时,2.0 不等于 2.00)。当且仅当指定的 Object 为 BigDecimal,并且其值和标度都等于此 BigDecimal 的值和标度时,返回 true。
nlk
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
下一篇:模拟QQ登录
- 国外程序员整理的Java资源大全(全部是干货) 2020-06-12
- 2020年深圳中国平安各部门Java中级面试真题合集(附答案) 2020-06-11
- 2020年java就业前景 2020-06-11
- 04.Java基础语法 2020-06-11
- Java--反射(框架设计的灵魂)案例 2020-06-11
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash