Pular para o conteúdo

Problema com cálculos

Responder tópico
  • Denunciar
  • Indicar

1. Problema com cálculos

Enviado em 23/04/2017 - 10:09h

Bom dia pessoa, estou com problemas em alguns cálculos e não entendo o porque. O mesmo formato com alguns números dá certo, e com outros dá errado.

Exemplo de quando dá certo:
$echo $((60*07))
420

Exemplo de quando dá errado:
$echo $((60*09))
bash: 60*09: valor muito grande para esta base de numeração (token de erro é "09")

Testei e quando a conta é x08 ou x09 ele retorna o erro. Se alguém souber me explicar o porque, agradeço!

Responder tópico

2. Re: Problema com cálculos

Enviado em 23/04/2017 - 10:20h



"Às vezes, pode aparecer um erro do tipo "valor muito grande para esta base de numeração (token com erro é "008")". Isso acontece porque o bash considera números que iniciam com zero como estando na base 8 (portanto, não podem ter dígitos maiores que 7). Para indicar que o valor é decimal, use "10#" na frente da variável (incluir "$" mesmo quando estiver dentro de parênteses). Por exemplo:"

http://www.monolitonimbus.com.br/matematica-com-shell-script/

3. Re: Problema com cálculos

Enviado em 23/04/2017 - 10:36h

Use o bc para fazer os cálculos:
echo "60*08" | bc 

4. Re: Problema com cálculos

Enviado em 24/04/2017 - 20:36h

jeansantos056 escreveu:

Bom dia pessoa, estou com problemas em alguns cálculos e não entendo o porque. O mesmo formato com alguns números dá certo, e com outros dá errado.

Exemplo de quando dá certo:
$echo $((60*07))
420

Exemplo de quando dá errado:
$echo $((60*09))
bash: 60*09: valor muito grande para esta base de numeração (token de erro é "09")

Testei e quando a conta é x08 ou x09 ele retorna o erro. Se alguém souber me explicar o porque, agradeço!
Como já foi dito, o problema ocorre pq o BASH "entende" que o nº está na base octal....
Opções:
awk '{print $1*$2}' <<< "60 07"
bc <<< "60*07"

marcelo oliver


Responder tópico

Responder tópico

Entre na sua conta para responder.

Fazer login para responder