Java BigDecimal类

简介: Java BigDecimal类学习

BigDecimal可以表示一个任意大小且精度完全准确的浮点数。

看了源码,BigDecimal主要是以一个BigInteger和int成员变量组成的

image.pngintVal表示数字部分,scale表示小数的位数。

BigDecimald1=newBigDecimal("123.45");
BigDecimald2=newBigDecimal("123.4500");
BigDecimald3=newBigDecimal("1234500");
/* 输出小数位数 */System.out.println(d1.scale()); // 2System.out.println(d2.scale()); // 4System.out.println(d3.scale()); // 0

格式化BigDecimal

使用 stripTrailingZeros() 方法可以将一个BigDecimal格式化为一个相等的,但去掉了末尾0的BigDecimal:

publicclassTest {
publicstaticvoidmain(String[] args) {
BigDecimalbd1=newBigDecimal("123.456");
BigDecimalbd2=newBigDecimal("123.4560");
System.out.println(bd1);
System.out.println(bd2);
System.out.println(bd2.stripTrailingZeros());
    }
}

image.png

比较BigDecimal

BigDecimal类提供两个比较方法,分别是 equalcompareTo ,两者区别在于前者除了数字部分一样,还需要小数位数一样,而后者是根据实际的值作比较。

因此必须使用 compareTo() 方法来比较,它根据两个值的大小分别返回负数、正数和0,分别表示小于、大于和等于。

publicclassTest {
publicstaticvoidmain(String[] args) {
BigDecimalbd1=newBigDecimal("123.456");
BigDecimalbd2=newBigDecimal("123.4560");
System.out.println(bd1.equals(bd2));
System.out.println(bd1.compareTo(bd2));
    }
}

image.png

相关文章
|
9天前
|
算法 Java 数据处理
从HashSet到TreeSet,Java集合框架中的Set接口及其实现类以其“不重复性”要求,彻底改变了处理唯一性数据的方式。
从HashSet到TreeSet,Java集合框架中的Set接口及其实现类以其“不重复性”要求,彻底改变了处理唯一性数据的方式。HashSet基于哈希表实现,提供高效的元素操作;TreeSet则通过红黑树实现元素的自然排序,适合需要有序访问的场景。本文通过示例代码详细介绍了两者的特性和应用场景。
29 6
|
2天前
|
Java 数据格式 索引
使用 Java 字节码工具检查类文件完整性的原理是什么
Java字节码工具通过解析和分析类文件的字节码,检查其结构和内容是否符合Java虚拟机规范,确保类文件的完整性和合法性,防止恶意代码或损坏的类文件影响程序运行。
|
2天前
|
Java API Maven
如何使用 Java 字节码工具检查类文件的完整性
本文介绍如何利用Java字节码工具来检测类文件的完整性和有效性,确保类文件未被篡改或损坏,适用于开发和维护阶段的代码质量控制。
|
6天前
|
Java
Java的原子变量类
Java的原子变量类
16 8
|
2天前
|
存储 Java 编译器
java wrapper是什么类
【10月更文挑战第16天】
11 3
|
5天前
|
Java 程序员 测试技术
Java|让 JUnit4 测试类自动注入 logger 和被测 Service
本文介绍如何通过自定义 IDEA 的 JUnit4 Test Class 模板,实现生成测试类时自动注入 logger 和被测 Service。
16 5
|
5天前
|
Java 开发者
在Java多线程编程中,创建线程的方法有两种:继承Thread类和实现Runnable接口
【10月更文挑战第20天】在Java多线程编程中,创建线程的方法有两种:继承Thread类和实现Runnable接口。本文揭示了这两种方式的微妙差异和潜在陷阱,帮助你更好地理解和选择适合项目需求的线程创建方式。
11 3
|
7天前
|
存储 SQL 安全
Java零基础-StringBuilder类详解
【10月更文挑战第12天】Java零基础教学篇,手把手实践教学!
16 5
|
5天前
|
Java
在Java多线程编程中,实现Runnable接口通常优于继承Thread类
【10月更文挑战第20天】在Java多线程编程中,实现Runnable接口通常优于继承Thread类。原因包括:1) Java只支持单继承,实现接口不受此限制;2) Runnable接口便于代码复用和线程池管理;3) 分离任务与线程,提高灵活性。因此,实现Runnable接口是更佳选择。
16 2
|
5天前
|
Java
Java中多线程编程的基本概念和创建线程的两种主要方式:继承Thread类和实现Runnable接口
【10月更文挑战第20天】《JAVA多线程深度解析:线程的创建之路》介绍了Java中多线程编程的基本概念和创建线程的两种主要方式:继承Thread类和实现Runnable接口。文章详细讲解了每种方式的实现方法、优缺点及适用场景,帮助读者更好地理解和掌握多线程编程技术,为复杂任务的高效处理奠定基础。
14 2