mandrivabrasil.org - Forum
24 de Maio de 2013, 03:16 *
Bem-vindo, Visitante. Por favor faça o Login ou Registro.

Login com nome de usuário, senha e duração da sessão
Notícias:
 
   Home   Ajuda Login Registrar  
Páginas: [1]   Ir para o Fundo
  Imprimir  
Autor Tópico: Numeros fracionados no ressultado do script  (Lida 2863 vezes)
degamber
Novato
*
Offline Offline

Mensagens: 7


Ver Perfil
« : 25 de Agosto de 2010, 19:52 »

Se alguem já passou por isso e puder me ajudar, gostaria que o resultado do script abaixo fosse 0.800 e não .800, desde já agradeço


#!/bin/bash
v1=0.400
fp=`echo $v1*2 | bc`
echo $fp
Registrado
Manoel Pinho
Administrador
Membro Vitalício
*****
Offline Offline

Mensagens: 8.404


inVISTA no seu conhecimento aprendendo linux !


Ver Perfil WWW
« Responder #1 : 25 de Agosto de 2010, 20:56 »

Na realidade quem está produzindo o resultado assim é o programa bc e não encontrei nada sobre formatação dos resultados na documentação do bc:

http://www.gnu.org/software/bc/manual/html_mono/bc.html

Você pode usar o awk para fazer isso:

#!/bin/bash
v1=0.400
fp=`echo $v1*2 | bc`
echo $fp | awk '{ printf "%1.3f\n", $1  }'

mas o awk também poderia fazer essa continha simples que vc fez SEM USAR o bc:

#!/bin/bash
v1=0.400
fp=`echo $v1*2`
echo $fp | awk '{ printf "%1.3f\n", $1  }'
« Última modificação: 25 de Agosto de 2010, 20:59 por Manoel Pinho » Registrado

atf
Visitante
« Responder #2 : 26 de Agosto de 2010, 09:37 »

Também pode ser assim:

echo 'print "0",.400*2,"\n"' | bc

utilizando a função "print" do "bc".
Registrado
degamber
Novato
*
Offline Offline

Mensagens: 7


Ver Perfil
« Responder #3 : 29 de Agosto de 2010, 10:38 »

Manoel Pinho

O seu primeiro exemplo o resultado da expressão foi 0.800, utilizando “bc”, agora o resultado da segunda expressão foi 0.400, utilizando o “awk” sem o "bc", ou seja, a multiplicação não foi feita.

Atf

O resultado da expressão foi 0.800

O problema e o seguinte, eu não consigo armazenar o valor 0.800 em uma variável.
Preciso desse valor fracionado para fazer o seguinte script:

#!/bin/bash

v1=0.400
v2=0.400

fp='print "0",$v1*2,"\n"' | bc
echo $fp
echo

if [[ $fp > $v2 ]]; then echo "$fp e maior que $v2";  else echo "$fp e menor que $v2"; fi

O resultado disso é :  e menor que 0.400,  gostaria que fosse : 0.800 e maior que 0.400

Pessoal desculpe a demora e desde já agradeço a resposta do Manuel e Atf
 
« Última modificação: 29 de Agosto de 2010, 11:14 por degamber » Registrado
atf
Visitante
« Responder #4 : 29 de Agosto de 2010, 17:46 »

Você está comparando coisas diferentes. "fp" é uma cadeia de caracteres, isto é, texto e v2 é um número decimal.
Registrado
Páginas: [1]   Ir para o Topo
  Imprimir  
 
Ir para:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.18 | SMF © 2006-2009, Simple Machines XHTML 1.0 Válido! CSS Válido!