当前位置: 首页 > 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. 典型应用场景

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

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

相关文章:

  • 2025年即时通讯APP如何抵御DDoS攻击?全链路防御方案与实战解析
  • 5.19本日总结
  • Axure跨页面交互:利用IFrame和JS实现父子页面菜单联动
  • 如何快速更换电脑浏览器ip:教程与注意事项
  • 煤化工数字化关键一步:Modbus TCP转Profinet网关实现全流程通信兼容
  • 基于 Vue 和 Node.js 实现图片上传功能:从前端到后端的完整实践
  • Ubuntu服务器部署多语言项目(Node.js/Python)方式实践
  • 学习STC51单片机07(芯片为STC89C52RC)
  • arm64适配系列文章-第八章-第二节-arm64环境上seata的部署-手动构建1.4.2版本镜像
  • 使用 NGINX 的 `ngx_http_secure_link_module` 模块保护资源链接
  • APP小程序抓包和下游代理
  • HTTP 协议基础
  • JVM 垃圾回收器
  • 魔族密码--dp+map+substr
  • uniapp vue 开发微信小程序 分包梳理经验总结
  • 2024CCPC吉林省赛长春邀请赛 Java 做题记录
  • MAC常用操作整理
  • codeup添加流水线docker自动化部署
  • RSP-BSP-1
  • 使用 nvm 管理 Node.js 和 npm 版本
  • 北方今年首场高温过程开启,西北华北黄淮多地最高或达40℃
  • 广东信宜一座在建桥梁暴雨中垮塌,镇政府:未造成人员伤亡
  • 私家车跑“顺风”出事故,意外险赔不赔?
  • 上海这场有温度的“人才集市”,为更多人才搭建“暖心桥”
  • 解放日报:“感觉全世界人都在上海买买买”
  • 法律顾问被控配合他人诈骗酒店资产一审判8年,二审辩称无罪