Общее числовое деление

Как правило, мы можем взять любое значение любого числового типа и разделить его на любое ненулевое значение любого числового типа и получить приемлемый результат.

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)

В то время как яя Любопытно, почему это так, реальный вопрос: есть ли какой-то обходной путь, чтобы обойти это ограничение?

Ответы на вопрос(2)

Ваш ответ на вопрос