Cómo obtener la longitud del dígito de (x * y * z * …) / (a ​​* b * c * …), donde x, y, z, a, b, c son enteros, pero (x * y * z. .) o (a * b * c ..) sería muy grande

Una forma de obtener una aproximación sería obtener el logaritmo (base 10) de cada número. log ((x * y * z) / (a ​​* b * c)) = log (x) + log (y) + log (z) -log (a) -log (b) -log (c). Esto le dará el número de dígitos a la izquierda del punto decimal.

EDITAR:
En realidad, esto dará una estimación de uno menos que el número de dígitos … a menos que el resultado sea exactamente un número entero. Un resultado de 0, o en cualquier lugar entre 0 y 1, significa un dígito; un resultado de 1, o entre 1 y 2, significa 2 dígitos, etc. Un resultado menor que 0 significa que la fracción es menor que uno, por lo que una representación estándar comenzaría con cero seguido de un punto decimal.

Además, olvidé mencionar que debe eliminar el signo negativo de todos los valores antes de tomar el logaritmo. La presencia o ausencia de signos negativos de la expresión no alterará el número de dígitos en el resultado.

Esta es más una pregunta matemática, pero te daré dos soluciones parciales:

1) Empareja tus divisores en magnitudes.
(x * y * z) / (a ​​* b * c) == (x / a) (y / b) (c / z)
Es menos probable que se desborde de esta manera, pero debe coincidir bien con las magnitudes.

2) Convierta todo en dobles o flotadores, y luego aplique el n. ° 1. No obtendrá una precisión perfecta, pero no se desbordará y debería estar dentro de un orden de magnitud.

Sin embargo, estoy seguro de que hay una mejor manera de determinar matemáticamente la solución. Probablemente analizando las magnitudes de los enteros individuales y luego sumando / restando las magnitudes.

More Interesting

Teoría estadística: ¿Cuáles son algunos resultados teóricos interesantes relacionados con la Estimación de la densidad del núcleo?

¿Cómo escribiría una función recursiva para contar el número de gráficos simples conectados con K bordes y N vértices claramente etiquetados?

¿Cómo se llama el número de elementos en un conjunto?

¿Cómo probarías que el problema máximo de conjunto independiente en los gráficos está en la clase NP?

¿Cuál es la relación entre un código Huffman y la serie Fibonacci?

¿Qué son las matemáticas discretas?

Cómo demostrar que [matemáticas] E (n, k) = \ Theta (n ^ \ frac {1} {k}) [/ matemáticas] para la recurrencia del problema clásico de caída de huevos

Sé que la función de devolución de llamada se ejecuta de forma asincrónica, pero ¿por qué es eso?

¿Cómo explicaría las diferencias subyacentes entre álgebra lineal, establecer álgebra teórica y álgebra relacional (especialmente desde una perspectiva CS / base de datos)?

¿Cuáles son algunos enfoques de aprendizaje no supervisados ​​para la agrupación dada una matriz de distancias por pares?

¿De qué manera aprender matemáticas avanzadas me haría un mejor programador?

¿Por qué utilizamos el kit de microprocesador 8085 para agregar dos números hexadecimales en lugar de un simple proceso de suma?

¿Qué es una explicación intuitiva de los teoremas de jerarquía y sus pruebas en la teoría de la complejidad computacional?

¿Qué cosas teóricas debo aprender sobre informática?

¿Alguien puede escribir una función Javascript que haga esto: add (1) (2) (8) debería devolver 11, es decir, la suma de los argumentos dados (el número de argumentos puede ser cualquier número natural)?