java 大数基本操作
导言:
计算机中数字的表示范围是有一定的限制的,像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

浙公网安备 33010602011771号