今天,在JavaDoc上查询了一下,发现用equals不能判断两个BigDecimal数值是否相等。
equals
public boolean equals(Object x)
Compares this BigDecimal with the specified Object for equality. Unlike compareTo, this method considers two BigDecimals equal only if they are equal in value and scale (thus 2.0 is not equal to 2.00 when compared by this method).
Overrides:
equals in class Object
Parameters:
x - Object to which this BigDecimal is to be compared.
Returns:
true if and only if the specified Object is a BigDecimal whose value and scale are equal to this BigDecimal's.
compareTo
public int compareTo(BigDecimal val)
Compares this BigDecimal with the specified BigDecimal. Two BigDecimals that are equal in value but have a different scale (like 2.0 and 2.00) are considered equal by this method. This method is provided in preference to individual methods for each of the six boolean comparison operators (<, ==, >, >=, !=, <=). The suggested idiom for performing these comparisons is: (x.compareTo(y) <op> 0), where <op> is one of the six comparison operators.
Parameters:
val - BigDecimal to which this BigDecimal is to be compared.
Returns:
-1, 0 or 1 as this BigDecimal is numerically less than, equal to, or greater than val.
从Doc中可以看出,当BigDecimal类型用equals做比较时,需要Scale相等,否则BigDecimal.equals(Object o),返回0;
而compareTo则不考虑Scale。所以,BigDecimal类型比较用CompareTo函数。
分享到:
相关推荐
本文将深入探讨BigDecimal的`equals`方法和`compareTo`方法的区别,这对于处理财务、金融等领域中对精度要求极高的计算至关重要。 首先,`equals`方法是Java对象的基本方法,它用于判断当前对象是否与指定对象相等...
这种设计遵循了“弱有序性”,即如果a.compareTo(b) > 0,那么b.compareTo(a) ,且a.compareTo(b) == 0暗示a.equals(b)也应为true(尽管equals()并不总是要求与compareTo()一致)。 使用`compareTo()`的基本语法: ...
15. compareTo() 和 compareToIgnoreCase() 函数 compareTo() 函数用于比较两个字符串的大小,compareToIgnoreCase() 函数用于忽略大小写比较两个字符串的大小。 例如:String s1 = "Hello"; String s2 = "World";...
在Java编程语言中,`equals()` 方法是一个关键的成员函数,它主要用于比较对象的值是否相等。这个方法源自于 `Object` 类,是所有其他类的基类。默认情况下,`equals()` 方法的行为与 `==` 运算符相同,即比较两个...
boolean t=b1.equals(b2); 怎么样,你认为t是true还是false?它还真是false。BigDecimal的大小比较,1.0与1.00是不相等的,得采用它自带的compareTo方法: java 代码 int i=b1.compareTo(b2) 这一次,返回的i可能...
在 Java 中,equals() 函数可以分为两种:浅比较和深比较。浅比较是比较对象的引用是否相等,而深比较是比较对象的实际值是否相等。通常情况下,我们使用深比较来比较对象的值。 在实现 equals() 函数时,需要注意...
1. **基础类型操作**:如整数(int)、浮点数(float/double)、字符(char)和布尔值(boolean)的操作函数,例如`parseInt()`、`parseFloat()`、`compareTo()`等。 2. **字符串处理**:`String`类提供了许多方法...
总结来说,尽管C#没有原生的strcmp函数,但通过String类的方法如CompareTo和String.Compare,我们可以轻松实现字符串的比较操作。理解这些方法的工作原理和使用场景,对于编写高效且健壮的C#代码至关重要。在实践中...
`Character`类还提供了许多关于Unicode字符属性的方法,如`getDirectionality(char ch)`和`getDirectionality(int codePoint)`,它们返回字符的方向属性,这对于处理文本流的方向性(如从左到右或从右到左)很重要。...
JAVA常见字符串函数 JAVA语言中,字符串函数是非常重要的一部分,今天我们将要讨论的一些常见的字符串函数。 1. charAt(int index) 函数:...这些字符串函数可以帮助我们更好地处理字符串,提高编程效率和代码质量。
`compareTo()` 和 `compareToIgnoreCase()` 用于比较两个字符串的顺序。 - `compareTo()` 比较时区分大小写。 - `compareToIgnoreCase()` 比较时不区分大小写。 ```java String s1 = "Hello"; String s2 = "hello"; ...
在 JAVA 中,集合元素必须唯一,并且需要定义 equals 函数和 compareTo 函数。 Key/Value 在 DELPHI 中,Key/Value 是通过 TStringList 来实现的,而在 JAVA 中,则是通过 HashMap、TreeMap 等来实现的。在 JAVA ...
- `Compare()`和`CompareTo()`方法:用于字符串的排序比较。 5. **字符串格式化** - `string.Format()`方法:`string formatted = string.Format("Name: {0}, Age: {1}", "Alice", 25);` - interpolation语法:`...
首先,文件标题和描述均表明文档主题为“Java基本函数”,因此内容将围绕Java中常用的数学函数、字符串处理函数以及其他实用函数。 在文件的部分内容中,列举了很多数学函数以及字符串操作的方法。数学函数方面,...
这个"日期函数所有样式大全"涵盖了C#中处理日期和时间的主要方法和属性,让我们逐一解析这些知识点: 1. **创建DateTime对象**:`DateTime dt = DateTime.Now;` 这行代码创建了一个表示当前系统日期和时间的`...
16. `compareTo()`和`compareToIgnoreCase()`:比较两个字符串的顺序,`compareTo()`区分大小写,`compareToIgnoreCase()`不区分大小写。 17. `indexOf()`和`lastIndexOf()`:查找字符或子串在字符串中首次出现和...
DateTime 方法大全 DateTime 是 C# 中的一个结构体,用于表示日期和时间。它提供了多种方法来操作和格式化日期和时间。本文将对常用的 DateTime...这些函数可以在 SQL 查询中使用,以便对日期和时间进行操作和格式化。
本文将深入探讨C#中的日期函数,以帮助开发者更好地理解和运用这些功能。 首先,`DateTime` 类是C#中用于表示日期和时间的主要结构。在示例中,`DateTime.Now` 属性用于获取当前系统的本地日期和时间。`dt.ToString...
13. **equals()**和**equalsIgnoreCase()**: - `equals()`:比较两个字符串的内容是否相同,区分大小写。 - `equalsIgnoreCase()`:比较两个字符串的内容是否相同,忽略大小写。 14. **regionMatches()**:检查...