【Java基础面试题042】什么是Java的BigDecimal类?

news/2024/12/27 22:02:59/

回答重点

BigDecimal是Java中提供的一个用于高精度计算的类,属于java.math包。它提供对浮点数和定点数的精确控制,特别适用于金融和科学计算等有高精度需求的领域

主要特点:

  • 高精度:BigDecimal可以处理任意精度的数值,而不像float和double存在精度限制
  • 不可变性:BigDecimal是不可变类,所有的算术运算都会返回新的BigDecimal对象,而不会修改原有对象(所以要注意性能问题)
  • 丰富的功能:提供了加减乘除取余舍入等多种计算方法,并支持各种舍入模式

扩展知识

通常情况下,大部分需要浮点数精确运算结果的业务场景,涉及到钱的场景,都是通过BigDecimal来做的

《阿里巴巴Java开发手册》:阿里巴巴Java开发手册 · Autism_Btkrsr/Blog_md_to_pdf - 码云 - 开源中国 (gitee.com)

手册中提到:浮点数之间的等值判断,基本数据类型不能用 == 来比较,包装数据类型不能用equals来判断

如何创建BigDecimal对象?

java">BigDecimal bd1 = new BigDecimal("123.45"); // 推荐,字符串没有精确丢失
BigDecimal bd2 = new BigDecimal(123.45); // 不推荐,double和float会引入精度问题
BigDecimal bd3 = BigDecimal.valueOf(123.45); // 推荐

四舍五入模式


http://www.ppmy.cn/news/1558620.html

相关文章

Spring Boot框架结合MongoDB实现日志数据的保存和归档

使用Spring Boot框架结合MongoDB实现日志数据的保存和归档,可以考虑以下几个关键点: 关键点概述 1) 数据库设计: 数据模型:确定你的日志记录所需的字段,如时间戳、日志级别、消息内容、用户ID等。索引&…

RBTree(红黑树)

目录 红黑树的概念 红黑树的性质 红黑树节点的定义 红黑树的插入 1. 按照二叉搜索的树规则插入新节点 2. 检测新节点插入后,红黑树的性质是否造到破坏 红黑树的检测 红黑树的删除 红黑树和AVL树的比较 红黑树的概念 红黑树,是一种二叉搜索树&…

基于TP5框架的家具购物小程序的设计与实现【附源码、文档】

博主介绍:✌IT徐师兄、7年大厂程序员经历。全网粉丝15W、csdn博客专家、掘金/华为云//InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ 🍅文末获取源码联系🍅 👇🏻 精彩专栏推荐订阅👇&#x1f3…

202年寒假充电计划——自学手册 网络安全(黑客技术)

🤟 基于入门网络安全/黑客打造的:👉黑客&网络安全入门&进阶学习资源包 前言 什么是网络安全 网络安全可以基于攻击和防御视角来分类,我们经常听到的 “红队”、“渗透测试” 等就是研究攻击技术,而“蓝队”、…

电脑ip地址会变化吗?电脑ip地址如何固定

在数字化时代,IP地址作为网络设备的唯一标识符,对于网络通信至关重要。然而,许多用户可能会发现,自己的电脑IP地址并非一成不变,而是会随着时间的推移或网络环境的变化而发生变化。这种变化有时会给用户带来困扰&#…

Let‘s encrypt 免费 SSL 证书安装

Let’s Encrypt 是一家免费、开放、自动化的证书颁发机构,由非营利组织互联网安全研究组(ISRG)运作。Let’s encrypt 证书是 3 个月有效期,可以通过脚本自动续期。 yum install certbot -y测试一下 Certbot 是否安装成功。 cert…

springboot项目给配置文件yml或者properties中的密码加密

方式一 引入第三方jar&#xff0c;快速加密 1、引入依赖 <dependency><groupId>com.github.ulisesbocchio</groupId><artifactId>jasypt-spring-boot-starter</artifactId><version>2.1.0</version> </dependency>2、加密密…

挑战一个月基本掌握C++(第十二天)了解命名空间,模板,预处理器

一 命名空间 假设这样一种情况&#xff0c;当一个班上有两个名叫 Zara 的学生时&#xff0c;为了明确区分它们&#xff0c;我们在使用名字之外&#xff0c;不得不使用一些额外的信息&#xff0c;比如他们的家庭住址&#xff0c;或者他们父母的名字等等。 同样的情况也出现在 …