大数介绍
如果基本的整数类型和浮点类型精确度还不够满足需求,那么可以使用javamath包中的BigInteger和BigDecimal类。这些类的对象代表了数字,该数字有任意长序列的位数。BigInteger类实现了任意精度整数计算,BigDecimal对浮点数有同样的实现。
BigInteger类的静态方法valueOf将long型转换为BigInteger: 例如
BigInteger n = BigInteger.valueof(876543210123456789L);
我们也可以用数字字符串构造
BigInteger:BigInteger k = new BigInteger("9876543210123456789");
Java不允许对象使用操作符,因此操作大数的时候,必须使用方法调用,
BigInteger r = BigInteger.valueOf(5).multiply(n.add(k)); // r = 5* (n + k)
BigDecima1类能计算出准确结果。
调用BigDecimal.valueof(n, e)返回BigDecimal示例,其值为nx10e次方
利用这个大数进行浮点数的减法运算
当我们进行浮点数的减法运算的时候可能会丢失精度,比如2.0-1.1=0.8999999999999
但是如果我们用这个BigDecimal.substract的话就不会丢失结果
BigDecimal.valueOf(2, 0 ).substract(BigDecimal.valueOf(11,
运算的结果精确为0.9。
本文作者:TranquilGlow
本文链接:https://www.cnblogs.com/xuehaiqiule/p/17633604.html
版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步