Alto, necesito probar mi calculadora de precisión arbitraria, y bc
parece 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.
¿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
bc
sale con elscale=<#>
argumento.Usando tu ejemplo:
También puede usar el
-l
interruptor (gracias a @manatwork) que inicializará la escala a 20 en lugar del valor predeterminado de 0. Por ejemplo:Puede leer más sobre esto
scale
en labc
pá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" -bc
especificaciónmin(max(sx,sy,scale),sx+sy)
dóndesx
ysy
son las escalas dex
yy
adentrox*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/1
creará 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