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

运算操作

相关推荐
大模型玩家七七13 小时前
基于语义切分 vs 基于结构切分的实际差异
java·开发语言·数据库·安全·batch
寻星探路18 小时前
【深度长文】万字攻克网络原理:从 HTTP 报文解构到 HTTPS 终极加密逻辑
java·开发语言·网络·python·http·ai·https
曹牧20 小时前
Spring Boot:如何测试Java Controller中的POST请求?
java·开发语言
爬山算法21 小时前
Hibernate(90)如何在故障注入测试中使用Hibernate?
java·后端·hibernate
kfyty72521 小时前
集成 spring-ai 2.x 实践中遇到的一些问题及解决方案
java·人工智能·spring-ai
猫头虎21 小时前
如何排查并解决项目启动时报错Error encountered while processing: java.io.IOException: closed 的问题
java·开发语言·jvm·spring boot·python·开源·maven
李少兄21 小时前
在 IntelliJ IDEA 中修改 Git 远程仓库地址
java·git·intellij-idea
忆~遂愿1 天前
ops-cv 算子库深度解析:面向视觉任务的硬件优化与数据布局(NCHW/NHWC)策略
java·大数据·linux·人工智能
小韩学长yyds1 天前
Java序列化避坑指南:明确这4种场景,再也不盲目实现Serializable
java·序列化