我想比较两个任意实例的Number,以找出哪一个更大。正如您所知,它们可以是整数、长整数或双精度浮点数,也可以是大整数或大十进制数。那该怎么办呢?
- Number没有实现Comparable。
- 不能使用
doubleValue()
,因为从大整数或大十进制数中可能会有精度损失。
我真的必须进行实例测试和转换吗?一定有一些库可以做到这一点。但我已经检查过Apache Commons和Guava,没有找到合适的。
编辑1:评论指出:比较两个通用数字的值。它有一个解决方案,使用toString()
将所有内容转换为BigDecimal。难道真的没有更好的方法吗?
编辑2:我刚刚发布了自己的答案作为对另一个问题的回答。它应该比已接受的答案更有效和健壮。