Divide uma variável por um número? [duplicado]

2
Basicamente eu preciso converter centímetros em polegadas, o que eu estou tentando fazer mergulhando a área em centímetros por 2,54.

Mas eu simplesmente não consigo fazer isso funcionar.

echo "please enter width and then height"

read width
read height

area=$(($width * $height))
inchesarea=$((area / 2.54))

echo $area
echo $inchesarea

Devo estar usando bc para isso?

    
por Strobe_ 30.03.2014 / 20:01

1 resposta

5

Você pode, mas isso é uma constante, então isso deve funcionar da seguinte maneira:

r=$(((area*10000)/254)) ; printf %d.%d  ${r%??} ${r#${r%??}}

Isso apresenta algumas dificuldades quando você trabalha com números grandes - como mais de 20 dígitos - mas, para muitas coisas, é aceitável.

Isso restringirá e arredondará automaticamente seu resultado para duas casas decimais - que, afinal de contas, não são decimais após a multiplicação. Nós então apenas manipulamos o resultado como uma string - primeiro removendo os dois últimos caracteres do resultado e inserindo uma casa decimal, depois os adicionando novamente depois.

Isso deve ser POSIX portátil.

    
por 30.03.2014 / 20:32