Diferença no resultado de echo e printf

0

Por que vejo uma diferença nos resultados para o código a seguir:

read a
printf "%.3f\n" $(bc -l <<< "$a")

RESULTADO: 17.929 e

read a
echo "scale=3; $a" | bc -l

RESULTADO: 17.928

Minha expressão de entrada é 5 + 50 * 3/20 + (19 * 2) / 7 .

Eles parecem estar fazendo a mesma coisa, mas o resultado final é diferente. Por quê?

Qual alteração (usando echo ) posso fazer no segundo snippet acima para obter o mesmo resultado que o primeiro snippet?

    
por 10101010 03.09.2017 / 19:34

1 resposta

1

Esta não é uma diferença entre echo e printf , mas uma diferença entre o processamento de números de printf e bc .

Eu acho que printf arredonda o último dígito e que bc não, mas apenas coloca os dígitos como calculados.

Você pode verificar isso fazendo com que ambas as abordagens gerem mais dígitos.

    
por 03.09.2017 / 19:37