给出两个这样的数字
val a: Any = 1
val b: Any = 2.3
我如何一般地比较这两个数字(无论这些数字中的一个是Double
,Long
,Float
等等?
大多数带有implicits的解决方案都不起作用,因为两个值都已转换为Any
。
答案 0 :(得分:2)
由于两者都可以被视为java.lang.Number
,您可以将它们投射到它们并比较它们的doubleValue
:
(a.asInstanceOf[Number]).doubleValue < (b.asInstanceOf[Number]).doubleValue
(小心Double.NaN
和大长值(感谢@PeterNeyens提醒)。如果你还需要处理多头,你应该使用更复杂的逻辑。)