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: Emmanuel Oliveira
Subject: Re: [shell-script] A função scale no comando bc não está reduzindo para dois dígitos
Date: Sat, 2 May 2015 12:35:16 +0000 (UTC)

Grande Professor Júlio,

Obrigado pela ajuda e pela resposta.

Vou seguir sua orientação, porque o bc realmente tem uns resultados meio estranhos, e realmente preciso de cálculos com duas casas decimais, por se tratar de moeda, e qualquer erro com moeda, é fatal, heheheheh

Muito obrigado mesmo e um ótimo sábado para todos da lista.

Emmanuel


De: "'Julio C. Neves' address@hidden [shell-script]" <address@hidden>
Para: "address@hidden" <address@hidden>
Enviadas: Sábado, 2 de Maio de 2015 9:14
Assunto: Re: [shell-script] A função scale no comando bc não está reduzindo para dois dígitos

 
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]