我用的方法尝试在斯卡拉这是试图取决于他们是多么大的圆号码,例如如果该值低于1,则将其舍入至少一个小数点是有意义的;而不是保留一个整数。这里就是我想:取整数值参数类型斯卡拉
def roundSmart[A](num: A)(implicit numeric: Numeric[A]) = num match {
case num if num < 1 => numeric.toDouble(num)
case _ => numeric.toInt(num)
}
会抛出这个错误:
value < is not a member of type parameter A
当然的参数需要接受函数签名以内的范围参数类型的,因为它可能采取整数或双打,这增加了更多的复杂性。
我已经采取了条件声明第一情况从这个答案 - Using comparison operators in Scala's pattern matching system并很渴望使用函数式编程方法。也许还有一些内置的scala函数,如Math.round()
可能有助于将第二个条件四舍五入,而不是删除任何小数。谢谢!
'math.round'并在斯卡拉存在 –