当前位置: 首页 > news >正文

算法竞赛 Java 高精度 大数 小数 模版

目录

1. BigInteger类(用于整数运算)

2. BigDecimal类(用于高精度小数运算)

3. 关键要点

4. 典型应用场景


在Java里,若要对超出基本数据类型表示范围的大数进行高精度计算,可借助BigIntegerBigDecimal类。下面为你介绍这两个类的常见用法:

1. BigInteger类(用于整数运算)

import java.math.BigInteger;public class BigIntegerExample {public static void main(String[] args) {// 创建BigInteger对象BigInteger a = new BigInteger("12345678901234567890");BigInteger b = BigInteger.valueOf(1000); // 从long值创建// 基本运算BigInteger sum = a.add(b);           // 加法BigInteger diff = a.subtract(b);     // 减法BigInteger product = a.multiply(b);  // 乘法BigInteger quotient = a.divide(b);   // 除法BigInteger remainder = a.remainder(b); // 取余// 输出结果System.out.println("和: " + sum);System.out.println("差: " + diff);System.out.println("积: " + product);System.out.println("商: " + quotient);System.out.println("余: " + remainder);// 比较大小int compareResult = a.compareTo(b);System.out.println(a + " 与 " + b + " 的比较结果: " + compareResult); // 1表示大于,0表示等于,-1表示小于// 其他常用方法BigInteger pow = a.pow(2);           // 幂运算BigInteger abs = a.abs();            // 绝对值BigInteger gcd = a.gcd(b);           // 最大公约数}
}

2. BigDecimal类(用于高精度小数运算)

import java.math.BigDecimal;
import java.math.RoundingMode;public class BigDecimalExample {public static void main(String[] args) {// 创建BigDecimal对象BigDecimal a = new BigDecimal("10.25");BigDecimal b = new BigDecimal("3.14");// 基本运算BigDecimal sum = a.add(b);           // 加法BigDecimal diff = a.subtract(b);     // 减法BigDecimal product = a.multiply(b);  // 乘法// 除法(必须指定精度和舍入模式)BigDecimal quotient = a.divide(b, 10, RoundingMode.HALF_UP); // 保留10位小数,四舍五入// 输出结果System.out.println("和: " + sum);System.out.println("差: " + diff);System.out.println("积: " + product);System.out.println("商: " + quotient);// 比较大小int compareResult = a.compareTo(b);System.out.println(a + " 与 " + b + " 的比较结果: " + compareResult);// 其他常用方法BigDecimal rounded = a.setScale(1, RoundingMode.HALF_UP); // 四舍五入保留1位小数BigDecimal abs = a.abs();            // 绝对值}
}

3. 关键要点

  • 创建对象:要通过字符串或者静态方法(像valueOf)来创建实例,防止精度丢失。
  • 不可变性BigIntegerBigDecimal对象都是不可变的,每次进行运算之后都会返回新的对象。
  • 除法注意事项:进行除法运算时,必须明确指定精度和舍入模式,不然在除不尽的情况下会抛出ArithmeticException异常。
  • 舍入模式
    • RoundingMode.HALF_UP:采用四舍五入的方式。
    • RoundingMode.DOWN:直接截断舍弃后面的数字。
    • RoundingMode.UP:直接进位。

4. 典型应用场景

  • 金融领域的计算(要保证精确的小数位数)。
  • 密码学相关的计算(处理超大整数)。
  • 科学计算(需要极高的精度)。

通过运用这两个类,你能够进行任意精度的数值计算,不过要留意性能开销,因为它们的运算速度比基本数据类型要慢。

http://www.xdnf.cn/news/538687.html

相关文章:

  • MySQL故障排查域生产环境优化
  • IIR 巴特沃斯II型滤波器设计与实现
  • React Contxt详解
  • 孤立森林和随机森林主要区别
  • Java实现:如何在文件夹中查找重复文件
  • 如何从容应对面试?
  • vi实时查看日志
  • UA 编译和建模入门教程(zhanzhi学习笔记)
  • 基于大模型的脑出血全流程预测系统技术方案大纲
  • 物联网安全技术的最新进展与挑战
  • 深入理解pip:Python包管理的核心工具与实战指南
  • (1-5)Java 常用工具类、包装类、StringStringBuilderString
  • 计算机存储与数据单位的核心定义及换算逻辑
  • 学习黑客 PowerShell 详解
  • 相机Camera日志分析之十五:高通相机Camx 基于预览1帧的ConfigureStreams Usecase完整过程日志分析详解
  • 辅助驾驶平权与出海,Mobileye的双重助力
  • Cursor 模型深度分析:区别、优缺点及适用场景
  • IOS 创建多环境Target,配置多环境
  • GK的作用是什么?
  • C语言指针深入详解(三):数组名理解、指针访问数组、一维数组传参的本质、冒泡排序、二级指针、指针数组、指针数组模拟二维数组
  • opencascade如何保存选中的面到本地
  • 使用MCP驱动IDA pro分析样本
  • DV SSL证书管理主要有哪些功能?
  • C语言—字符函数和字符串函数
  • 如何实现从网页一键启动你的 Electron 桌面应用(zxjapp://)
  • pcie phy电气层(PCS)详解gen1、2 (rx)
  • 北斗卫星通讯终端的技术原理是什么
  • 2025-05-19 学习记录--Python-简易用户登录系统 + 计算天数
  • RAG策略
  • 第二章、IMU(Inertial Measurement Unit 惯性测量单元)