División numérica genérica

Como regla general, podemos tomar cualquier valor de cualquier tipo de número, dividirlo por cualquier valor distinto de cero de cualquier tipo de número y obtener un resultado razonable.

212.7 / 6   // Double = 35.449999999999996
77L / 2.1F  // Float = 36.666668

La única excepción que he encontrado es que no podemos mezclar unBigInt con un tipo fraccional (Float oDouble)

En el ámbito de los genéricos, sin embargo, existe esta interesante distinción entreIntegral yFractional tipos.

// 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)

Mientras yoa.m Curioso por qué es esto, la verdadera pregunta es: ¿hay algún tipo de solución disponible para evitar esta limitación?

Respuestas a la pregunta(2)

Su respuesta a la pregunta