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

运算操作

相关推荐
Anastasiozzzz1 小时前
从有限状态机到智能体图:传统 FSM 与 Agent Graph的演进
java·人工智能·python·ai
wang09077 小时前
自己动手写一个spring之IOC_2
java·后端·spring
来杯@Java7 小时前
学生选课管理系统(基于springboot+vue前后端分离的项目)计算机毕业设计java
java·spring boot·spring·vue·毕业设计·maven·mybatis
不知名的老吴8 小时前
线程的生命周期之线程“插队“
java·开发语言·python
ANnianStriver8 小时前
PetLumina-02-后端开发与前后端联调
java·ai·sa-token
杨了个杨89829 小时前
Keepalived + Nginx + HAProxy 高可用架构部署实战案例
java·nginx·架构
马士兵教育11 小时前
Java还有前景吗?Java+AI大模型学习路线及项目?
java·人工智能·python·学习·机器学习
snow@li12 小时前
Java:理解 Gradle / 后端项目的管家 / 打包SpringBoot 应用 / 完成编译、下载依赖、运行测试、打包 JAR/WAR / 速查表
java
云烟成雨TD12 小时前
Spring AI 1.x 系列【57】动态工具发现:Tool Search Tool
java·人工智能·spring