Alto, necesito probar mi calculadora de precisión arbitraria, y bcparece un buen criterio para comparar, sin embargo, bctrunca el resultado de cada multiplicación a lo que parece ser la escala máxima de los operandos involucrados.
¿Hay alguna forma rápida de desactivar esto o de configurar automáticamente la escala de cada multiplicación a la suma de las escalas de los factores para que no pierda precisión?
Si tiene una solución más elegante para esto que involucra algo diferente bc, le agradecería que lo comparta.
Ejemplo:
$ bc <<< '1.5 * 1.5'
2.2
La respuesta real es 2.25.
bc
calculator
PSkocik
fuente
fuente

Respuestas:
Puede controlar la escala que
bcsale con elscale=<#>argumento.Usando tu ejemplo:
También puede usar el
-linterruptor (gracias a @manatwork) que inicializará la escala a 20 en lugar del valor predeterminado de 0. Por ejemplo:Puede leer más sobre esto
scaleen labcpágina del manual .fuente
bc -l. " -L (La letra ell.) Defina las funciones matemáticas e inicialice la escala a 20, en lugar del cero predeterminado" -bcespecificaciónmin(max(sx,sy,scale),sx+sy)dóndesxysyson las escalas dexyyadentrox*y. La configuraciónscale=scale(x)+scale(y)le dará la máxima precisión necesaria. Establecer la escala a un número más alto (como un 1000) no aumentará la escala del resultado. La variable de escala solo afecta directamente a s, el resultado de la divisiónscale=1000; a/1creará un resultado con 1000 dígitos decimales (después del punto) sin importar la escala de a antes.Prueba esto :
Buscar hombre de bc para variable de escala
fuente
He creado esta función bash que no mostrará ceros finales
Ejemplo:
calc 1.25^3= 1.953125fuente