Общее числовое деление
Как правило, мы можем взять любое значение любого числового типа и разделить его на любое ненулевое значение любого числового типа и получить приемлемый результат.
212.7 / 6 // Double = 35.449999999999996
77L / 2.1F // Float = 36.666668
Единственное исключение, которое я обнаружил, это то, что мы не можем смешатьBigInt
с дробным типом (Float
или жеDouble
).
В области дженериков, однако, существует такое интересное различие междуIntegral
а такжеFractional
типы.
// can do this
def divideI[I](a: I, b: I)(implicit ev: Integral[I]) = ev.quot(a,b)
// or this
def divideF[F](a: F, b: F)(implicit ev: Fractional[F]) = ev.div(a,b)
// but not this
def divideN[N](a: N, b: N)(implicit ev: Numeric[N]) = ev.???(a,b)
В то время как яя Любопытно, почему это так, реальный вопрос: есть ли какой-то обходной путь, чтобы обойти это ограничение?