Quando eu corro:
fval=1.40 ; echo "scale=0 ; 1000 * ${fval}" | bc
Obtenho o resultado:
1400.00
Com meu valor especificado para scale
, não espero dígitos decimais.
Alguém mais tem esse problema?
Versão: bc
1.07.1
Ubuntu 22.04.4 LTS
(Atualização do Ubuntu MATE de 20.04 LTS para 22.04.04 LTS, não é uma instalação nova)
Não é um bug. De
man bc
:E, mais abaixo:
Portanto, o fato de "A escala do resultado é o valor da variável escala " não ser explicitamente declarado (ao contrário de quando descrito
expr / expr
), já significa queexpr * expr
não se espera que honrescale
.Além disso, o fato de que no caso de
expr * expr
"o resultado é a escala máxima das expressões envolvidas" pode ser confirmado empiricamente:Para obter o comportamento desejado, você pode adicionar uma divisão sem sentido (observe que, como
scale
o padrão é 0, você pode omiti-la):