在 Java 中,所有数值类型都继承自 java.lang.Number。使用如下方法是不是一个好主意:
public boolean areEqual(Number first, Number second) {
if (first != null && second != null) {
return first.equals(second);
}
}
我担心 double 2.00000 不等于 int 2 的情况。这些是由内置 equals 处理的吗?如果没有,有没有办法在java中编写一个简单的数字比较函数? (外部库如 apache commons 都可以)
原文由 David 发布,翻译遵循 CC BY-SA 4.0 许可协议
A
Double
永远不会equals
到Integer
。此外,double
与Double
。Java 有原始类型和引用类型。 Java 中真正的数字类型不从
Number
扩展,因为它们是原始类型。您可能需要考虑一个不混合类型的系统,因为这通常会导致隐式/显式转换出现很多问题,可能/可能不会丢失信息等。
相关问题
在
int
与Integer
:关于
Number
比较:java.lang.Number
不实施Comparable
?也可以看看
关于混合类型计算
混合类型计算是 Java Puzzlers 中至少 4 个谜题的主题。
以下是各种摘录: