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

运算操作

相关推荐
洛阳泰山5 分钟前
【开源项目】MaxKB4J基于java开发的工作流和 RAG智能体的知识库问答系统
java·人工智能
IT-ZXT8888 分钟前
Spring 框架之IOC容器加载重要组件
java·后端·spring
xlsw_29 分钟前
MyBatis之测试添加功能
java·开发语言·mybatis
保持学习ing1 小时前
黑马Java面试笔记之 消息中间件篇(RabbitMQ)
java·微服务·面试·java-rabbitmq
---wzy---1 小时前
docker生命周期
java·docker·容器
可可,天上人间1 小时前
path环境变量
java·环境·环境变量·path
何中应1 小时前
【设计模式-4.11】行为型——解释器模式
java·设计模式·解释器模式
程序员葵安1 小时前
【Java Web】9.Maven高级
java·数据库·后端·maven
界面开发小八哥1 小时前
「Java EE开发指南」如何使用MyEclipse在Web项目中用Web Fragments?
java·前端·ide·java-ee·eclipse·myeclipse
不想头秃a2 小时前
JavaEE初阶-网络编程
java·运维·服务器·网络