比较两个通用数字的值

比较两个通用数字的值,第1张

比较两个通用数字的值

一个有效的(但脆弱的)解决方案是这样的:

class NumberComparator implements Comparator<Number> {    public int compare(Number a, Number b){        return new BigDecimal(a.toString()).compareTo(new BigDecimal(b.toString()));    }}

不过,它仍然不是很好,因为它依靠

toString
返回一个可解析的值
BigDecimal
(标准Java
Number
类可以执行此 *** 作,但是
Number
合同不需要)。

七年后编辑: 正如评论中指出的那样

toString
,您需要考虑以下三种(至少?)特殊情况:

  • Infinity
    ,它等于所有事物,除了等于它的自身之外
  • -Infinity
    ,它等于所有事物,除了等于它的自身
  • NaN
    ,比较起来比较
    NaN``false
    费力/不可能,因为所有与之比较的结果都会产生,包括检查自身是否相等。


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zaji/5487703.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-12
下一篇 2022-12-12

发表评论

登录后才能评论

评论列表(0条)

保存