shell-script-pt
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [shell-script] A função scale no comando bc não está reduzindo para


From: Julio C. Neves
Subject: Re: [shell-script] A função scale no comando bc não está reduzindo para dois dígitos
Date: Sat, 2 May 2015 09:14:09 -0300

Não sou um especialista em bc (que é muito complexo), talvez por isso, noto algumas coisas estranhas (mas estranhas pq não conheço o motivo, mas com certeza tem explicação). Veja esses exemplos:

$ echo '5.0 * 2.0' | bc  # Usou a qtd de decimais dos operandos
10.0
$ echo '5.0 / 2.0' | bc  # Não usou a qtd de decimais dos operandos
2
$ echo 'scale=2; 5.000 / 2.0001' | bc  # Não usou a qtd de decimais dos operandos
2.49
$ echo 'scale=2; 5.000 * 2.0001' | bc  # Usou a qtd de decimais dos operandos
10.0005

Como nunca mergulhei fundo para descobrir o porquê disso, dou uma mutretada e no teu caso, substituiria as linhas de echo onde vc imprime as 2 variáveis, pela linha seguinte:

LANG=C printf "Limite 1=%.2f\nLimite 2=%.2f\n" $LIMITE_COMPRA_01 $LIMITE_COMPRA_02


Abcs,
Julio
@juliobash
P
róximos cursos de Shell
Cidade         Local Período
Rio de Janeiro EDX 18 a 22/05/15
São Paulo 4Linux 15 a 19/06/15
São Paulo 4Linux 03 a 07/08/15
São Paulo 4Linux 07 a 11/12/15

Dou treinamento de Shell em qualquer cidade.
Para mais detalhes, me mande um e-mail.


Em 1 de maio de 2015 22:57, address@hidden [shell-script] <address@hidden> escreveu:
 

Saudações pessoal,


Já tentei de tudo quanto é jeito, Google, etc ... mas não estou conseguindo ver o porque a função scale do comando bc não está convertendo um número decimal para dois dígitos. 


Fiz de duas formas diferentes,  e tentei várias variações, e nada funciona. 


--------------------------------------------------------------------------------------------------

#!/bin/bash


COTACAO_YUAN="6.2032"


LIMITE_COMPRA_01=$(echo "scale=2; $COTACAO_YUAN * 4.5;" | bc)


LIMITE_COMPRA_02=`echo "scale=2; ($COTACAO_YUAN * 4.5);" | bc`


echo $LIMITE_COMPRA_01


echo $LIMITE_COMPRA_02


---------------------------------------------------------------------------------------------------------

$ ./executa.sh 

27.9144

27.9144





reply via email to

[Prev in Thread] Current Thread [Next in Thread]