BC-multiplicación automática de precisión completa

Alto, necesito probar mi calculadora de precisión arbitraria, y parece ser un buen criterio para comparar, sin embargo, bc trunca el resultado de cada multiplicación a lo que parece ser la escala máxima de los operandos involucrados cada uno.

¿Hay una forma rápida de desactivar esto o establecer automáticamente la escala de cada multiplicación en la sum de escalas de los factores para que no pierda ninguna precisión?

Si tienes una solución más elegante para esto que involucre algo que no sea bc , te agradecería que la compartieras.

Ejemplo:

 $ bc <<< '1.5 * 1.5' 2.2 

La verdadera respuesta es 2.25.

Puede controlar la escala que bc genera con el argumento scale=<#> .

 $ echo "scale=10; 5.1234 * 5.5678" | bc 28.52606652 $ echo "scale=5; 5.1234 * 5.5678" | bc 28.52606 

Usando tu ejemplo:

 $ bc <<< 'scale=2; 1.5 * 1.5' 2.25 

También puede usar el modificador -l (gracias a @manatwork) que inicializará la escala en 20 en lugar del valor pnetworkingeterminado de 0. Por ejemplo:

 $ bc -l <<< '1.5 * 1.5' 2.25 $ bc -l <<< '1.52 * 1.52' 2.3104 

Puede leer más acerca de la scale en la página man bc .

Prueba esto :

 $ bc scale=10 1.5 * 1.5 2.25 

Buscar hombre de bc para la variable de escala

Creé esta function bash que no mostrará ceros finales

 calc () { MAX_PRECISION=20; bc <<< "scale=$MAX_PRECISION; scale = scale($@); $@"; } 

Ejemplo: calc 1.25^3 = 1.953125