BigDecimal (Java 中用于精确计算的类)

        BigDecimal是 Java 中用于精确计算的类,位于 java.math 包中。它提供了精确的浮点数运算,适用于需要高精度计算的场景,比如金融计算。以下是一些常用的 BigDecimal 方法及其代码案例:

1. 构造方法

  • BigDecimal(String val):通过字符串构造一个 BigDecimal 实例。
BigDecimal bd1 = new BigDecimal("123.45");
System.out.println(bd1);

2. 加法运算

  • add(BigDecimal augend):加法运算。
BigDecimal bd1 = new BigDecimal("10.5");
BigDecimal bd2 = new BigDecimal("20.3");
BigDecimal sum = bd1.add(bd2);
System.out.println("Sum: " + sum);

3. 减法运算

  • subtract(BigDecimal subtrahend):减法运算。
BigDecimal bd1 = new BigDecimal("10.5");
BigDecimal bd2 = new BigDecimal("20.3");
BigDecimal difference = bd1.subtract(bd2);
System.out.println("Difference: " + difference);

4. 乘法运算

  • multiply(BigDecimal multiplicand):乘法运算。
BigDecimal bd1 = new BigDecimal("10.5");
BigDecimal bd2 = new BigDecimal("2");
BigDecimal product = bd1.multiply(bd2);
System.out.println("Product: " + product);

5. 除法运算

  • divide(BigDecimal divisor, int scale):除法运算,scale 指定结果的小数点后位数。
BigDecimal bd1 = new BigDecimal("10.5");
BigDecimal bd2 = new BigDecimal("2");
BigDecimal quotient = bd1.divide(bd2, 2, BigDecimal.ROUND_HALF_UP);
System.out.println("Quotient: " + quotient);

6. 四舍五入

  • setScale(int newScale, RoundingMode roundingMode):设置小数点后位数,并指定舍入模式。
BigDecimal bd = new BigDecimal("123.456");
BigDecimal rounded = bd.setScale(2, BigDecimal.ROUND_HALF_UP);
System.out.println("Rounded: " + rounded);

7. 比较

  • compareTo(BigDecimal val):比较两个 BigDecimal 的大小。
BigDecimal bd1 = new BigDecimal("10.5");
BigDecimal bd2 = new BigDecimal("20.3");
int result = bd1.compareTo(bd2);
if (result > 0) {
    System.out.println(bd1 + " is greater than " + bd2);
} else {
    System.out.println(bd1 + " is less than " + bd2);
}

8. 绝对值

  • abs():返回绝对值。
BigDecimal bd = new BigDecimal("-123.45");
BigDecimal abs = bd.abs();
System.out.println("Absolute value: " + abs);

9. 幂运算

  • pow(int n):求幂。
BigDecimal bd = new BigDecimal("2");
BigDecimal power = bd.pow(3);
System.out.println("Power: " + power);

10. 开方

  • sqrt():开平方。
BigDecimal bd = new BigDecimal("16");
BigDecimal sqrt = bd.sqrt(BigDecimal.ROUND_HALF_UP);
System.out.println("Square root: " + sqrt);

        使用 BigDecimal 时,需要注意它所有的操作都是通过对象方法进行的,而不是使用操作符,这样可以避免精度损失。此外,BigDecimal 的操作可能会比较慢,因此在性能敏感的应用中需要谨慎使用。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/900220.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

普通数组矩阵

文章目录 普通数组一、最大子数组二、合并区间三、轮转数组四、除自身以外数组的乘积五、缺失的第一个正数 普通数组 一、最大子数组 题目链接 方法一:动态规划 方法二:前缀和(有点难理解) 二、合并区间 题目链接 三、轮…

软件部署-Docker容器化技术(二)

上一期分享了Docker的一些基本内容,这一期主要对构建基础镜像和Docker网络、文件挂载再展开分享下,可能不一定做得很好,主要是在学习的过程中有一些自己的总结和思考,和大家一起学习。 名词说明:这里的宿主机是指liun…

【D3.js in Action 3 精译_037】4.1 DIY 实战:D3 源码分析之——d3.timeFormat() 函数

当前内容所在位置(可进入专栏查看其他译好的章节内容) 第一部分 D3.js 基础知识 第一章 D3.js 简介(已完结) 1.1 何为 D3.js?1.2 D3 生态系统——入门须知1.3 数据可视化最佳实践(上)1.3 数据可…

Shopee虾皮登录不了的常见原因及解决方式

在近年来,随着电子商务的迅猛发展,Shopee虾皮作为东南亚地区的领先购物平台,吸引了大量用户。一些用户在使用过程中常常遇到登录问题,而登录不了的原因可能多种多样,包括网络连接不稳定、账号信息输入错误,…

【搭建个人图库】Docker部署Piwigo图库与公网环境远程传图全攻略

文章目录 前言1. 安装Docker2. 创建并启动Piwigo容器3. 本地访问测试与简单使用4. 公网远程访问本地Piwigo4.1 内网穿透工具安装4.2 创建远程连接公网地址4.3 使用固定公网地址远程访问 前言 本文和大家分享一下如何在Linux系统使用Docker部署一款开源的网络图片库管理系统Piw…

54页可编辑PPT | 大型集团企业数据治理解决方案

这份PPT是关于大型集团企业数据治理的全面解决方案,它详细介绍了数据治理的背景、需求、管理范围、框架、解决思路,以及数据治理在实际操作中的关键步骤。内容涵盖了数据架构、数据质量、数据应用等方面的问题,并提出了数据资产透视、智能搜索…

K8S如何基于Istio重新实现微服务

K8S如何基于Istio重新实现微服务 认识 Istio前言Istio 的理念Istio 的架构数据平面控制平面服务与 Istio 的关系 Istio 实践环境准备安装 Helm安装Istio 使用 Istio 代理运行应用情感分析应用的架构使用 Istio 代理运行应用Sidecar 注入Ingress 网关网关资源VirtualService 资源…

离线部署jdk8,jdk17, jdk21

目录 一、下载地址二、环境三、离线部署思路步骤 四、部署脚本 在开发过程中,有时我们需要在同一台机器上安装多个不同版本的 JDK,以满足不同项目的需求。本文将详细介绍如何在 Ubuntu 24.04 中离线安装 JDK8、JDK17 和 JDK21。 一、下载地址 建议下载O…

融合DevOps打造企业高效流程体系的实践与探索

一、引言 转眼间,我已毕业十多年,在IT领域深耕不辍,曾涉足全栈研发、大数据研发、架构设计与项目管理等多个岗位,更主导过公司从市场到交付再到运营的全链条流程建设。在这漫长的职业生涯中,一个问题始终萦绕在我心头&…

web前端练习

01 代码&#xff1a;HTML部分 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>search</title>…

华为配置BFD状态与接口状态联动实验

组网图形 图1 配置BFD状态与接口状态联动组网图 BFD简介配置注意事项组网需求配置思路操作步骤配置文件 BFD简介 为了减小设备故障对业务的影响&#xff0c;提高网络的可靠性&#xff0c;网络设备需要能够尽快检测到与相邻设备间的通信故障&#xff0c;以便及时采取措施&…

百科知识|选购指南

百科知识||选购指南 百科知识选购指南茶叶分类茶叶的味道来源茶叶制作步骤名茶其他一些茶叶的知识 百科知识 选购指南 茶叶 分类 茶叶种类: 六大茶类完美分析介绍&#xff01;茶友推荐收藏 (aboxtik.com) 1.绿茶&#xff08;发酵率0%&#xff09; 2.白茶&#xff08;发酵率…

对杨笠没有意见,但对京东有 | 生活周刊 #5

持续分享高效率工具&#xff0c;以及日常生活、个人成长、运动健康和法律案例等的内容&#xff0c;欢迎关注 &#x1f4f6; 关于杨笠 对于杨笠&#xff0c;我对她没什么偏见&#xff0c;也好奇为什么代言京东会触发这么大的反弹&#xff0c;直到我看到杨笠的冒犯的艺术&#x…

Axure垂直菜单展开与折叠

亲爱的小伙伴&#xff0c;在您浏览之前&#xff0c;烦请关注一下&#xff0c;在此深表感谢&#xff01; 课程主题&#xff1a;Axure垂直菜单展开与折叠 主要内容&#xff1a;垂直菜单单击实现展开/折叠&#xff0c;点击各菜单项显示选中效果 应用场景&#xff1a;后台菜单设…

【python实战】利用代理ip爬取Alibaba海外版数据

引言 在跨境电商的业务场景中&#xff0c;数据采集是分析市场、了解竞争对手以及优化经营策略的重要环节。然而&#xff0c;随着越来越多企业依赖数据驱动决策&#xff0c;许多跨境电商平台为了保护自身数据&#xff0c;采取了更严格的防护措施。这些平台通过屏蔽大陆IP地址或部…

专业135+总分400+西安交通大学815869(原909)信号与系统考研经验电子信息与通信工程,真题,大纲,参考书

经过将近一年的考研复习&#xff0c;终于梦圆西安交大&#xff0c;今年专业课815(和专硕869&#xff08;原909&#xff09;差不多)信号与系统135&#xff0c;总分400&#xff0c;回想这一年的复习还有很多经验和大家分享&#xff0c;希望可以对大家复习有所帮助&#xff0c;少走…

Docker 与 Yocto

Yocto项目为什么需要Docker Yocto 项目并不直接依赖 Docker&#xff0c;但在某些情况下使用 Docker 可以为 Yocto 项目提供以下具体且实际的好处&#xff1a; 1. 环境一致性&#xff1a; Yocto 构建需要一个稳定且一致的开发环境。不同的 Linux 发行版可能会有不同的库版本、…

如何实现智能图像擦除

我们在拍照时&#xff0c;往往会拍到一些路人或者杂物&#xff0c;但是这个照片又不想删掉&#xff0c;那么有没有啥方法可以把照片中的特定部分给删除&#xff0c;然后还原这部分的原始内容呢&#xff1f;有些人可能会用ps&#xff0c;但是ps操作比较复杂并且效果还不是很好&a…

Photoshop中的混合模式公式详解

图层混合简介 图层混合&#xff08;blend&#xff09;顾名思义&#xff0c;就是把两个图层混合成一个。 最基本的混合是alpha融合&#xff08;alpha compositing&#xff09;&#xff0c;这是一个遵循光的反射与透射等&#xff08;简化版&#xff09;物理学原理的混合方式。 各…

信号与系统学习:傅里叶级数

一、基本概念 1. 什么是傅里叶级数&#xff1f; 傅里叶级数是一种数学工具&#xff0c;可以将一个周期函数分解为一系列正弦和余弦函数&#xff08;即三角函数&#xff09;的和。这些正弦和余弦函数的频率是原函数的整数倍。 2. 为什么要使用傅里叶级数&#xff1f; 信号分…