处理大数字与浮点数

算计的类型都有取值范围,当碰到大于这个范围的数时,计算机就会截断数值的二进制,导致错误。对于这种情况,我们怎么做呢?

Java提供了一个BigInterger类,支持大整数的加减乘除

具体用法:

先创建一个BigInterger对象,然后对象调用下面方法。

1.BigInteger(String value):构造方法,将value字符串变成BigInteger类型数据。

2.BigInteger add(BigInteger value):加法,求两个BigInteger类型数据的和。

3.BigInteger subtract(BigInteger value):减法,求两个BigInteger类型数据的差。

4.BigInteger multiply(BigInteger value):乘法,求两个BigInteger类型数据的积。

5.BigInteger divide(BigInteger divisor):除法,求两个BigInteger类型数据的商。

6.BigInteger modInverse(BigInteger m):求模,求BigInteger类型数据对m求模。

7.BigInteger remainder(BigInteger divisor):求余数,求BigInteger类型数据除以divisor的余数。

8.BigInteger max(BigInteger value):最大数,求两个BigInteger类型数据的最大值。

9.BigInteger min(BigInteger value):最小数,求两个BigInteger类型数据的最小值。

10.BigInteger gcd(BigInteger value):最大公约数,求两个BigInteger类型数据的最大公约数。

11.BigInteger abs():绝对值,求BigInteger类型数据的绝对值。

12.BigInteger negate():相反数,求BigInteger类型数据的相反数。

以上方法转自https://blog.csdn.net/weixin_37730482/article/details/70258534

 

 

对于两个浮点数,计算机有时不能精确的表达浮点数,比如0.0001和0.000100000000000000000001计算机会认为它俩相等,所以面对像这种情况,比较它俩的绝对值是否在某个允许范围之内。

double i = 0.0001;

double j = 0.00010000000000000001;

if ( Math.Abs(i - j) < 1e-10 )

System.out.println("true");

else System.out.println("false");

 

posted @ 2021-09-24 23:07  信2005-2赵磊  阅读(73)  评论(0)    收藏  举报