处理大数字与浮点数

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

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 @   信2005-2赵磊  阅读(69)  评论(0编辑  收藏  举报
编辑推荐:
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
阅读排行:
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 字符编码:从基础到乱码解决
· 提示词工程——AI应用必不可少的技术
点击右上角即可分享
微信分享提示