BigInteger和BigDecimal

BigInteger

java 复制代码
// OpenJDK 源码中的关键字段
public class BigInteger {
    // 符号位:1表示负数,0表示零,1表示正数
    final int signum;

    // 存储绝对值的大端序(big-endian)int数组
    -   采用 **二进制补码** 形式存储
    -   最高位int的最高bit表示符号(非标准补码实现)
    -   例如:数字 `12345678901234567890` 可能存储为 `[0xAB54A98C, 0xEB1F0AD2]`
    final int[] mag; 运算时对其数组位置然后分段运算

    // 其他辅助字段...
}

加减乘除等运算

BigDecimal

java 复制代码
private final BigInteger intVal;     // 未缩放整数值
private final int scale;            // 小数位数
private transient int precision;    // 精度(非final,延迟计算)

举例:

ini 复制代码
BigInteger num1 = new BigInteger("123456");
//signum 1
//mag 01 E2 40 [1, -30, 64]
java 复制代码
BigDecimal decimal = new BigDecimal("5.20E+3");//5200
BigDecimal decimal1 = new BigDecimal("1234.560");
BigDecimal decimal2 = new BigDecimal("-789.210");
BigDecimal decimal3 = new BigDecimal("123.456789",new MathContext(4));
// intVal   sacle  precision
   520        -1      3   
   1234560     3      7
   -789210     3      6
   1235        1      4

运算操作

相关推荐
qq_12498707531 分钟前
基于springboot的鸣珮乐器销售网站的设计与实现(源码+论文+部署+安装)
java·spring boot·后端·spring·毕业设计·计算机毕业设计
海南java第二人1 分钟前
SpringBoot核心注解@SpringBootApplication深度解析:启动类的秘密
java·spring boot·后端
win x6 分钟前
Redis集群
java·数据库·redis
r_oo_ki_e_6 分钟前
java23--异常
java·开发语言
qq_124987075317 分钟前
基于Spring Boot的“味蕾探索”线上零食购物平台的设计与实现(源码+论文+部署+安装)
java·前端·数据库·spring boot·后端·小程序
爬山算法21 分钟前
Hibernate(38)如何在Hibernate中配置乐观锁?
android·java·hibernate
江上月51325 分钟前
JMeter中级指南:从数据提取到断言校验全流程掌握
java·前端·数据库
晨旭缘26 分钟前
零基础后端入门:JDK21 + PostgreSQL+Java项目
java·数据库·postgresql
BullSmall27 分钟前
SpringBoot 项目日志规范(企业级标准 + 最佳实践)
java·spring boot·spring
better_liang27 分钟前
每日Java面试场景题知识点之-线程池
java·线程池·并发编程·juc·企业级开发