[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
RES: [shell-script] notação científica - como lidar?
From: |
Julio Cezar Neves - DATAPREVRJ |
Subject: |
RES: [shell-script] notação científica - como lidar? |
Date: |
Thu, 1 Jun 2006 14:47:46 -0300 |
Ricardo,
há mais de 10 anos, fiz um bacalho que posteriormente um colega adaptou para
o Bash, mas não o testei após a migração.
Execute-o dentro do seu programa da seginte forma:
var=$(exp2dec.sh 5.00E06 6)
echo $var
5000000.00
var=$(exp2dec.sh 5.00E-06 6)
echo $var
.000005
Isto é, passe como parâmetros a expressão e a precisão que vc deseja. A
seguir seu código:
#!/bin/bash
# Recebe numeros no formato exponencial
# e transforma-os para o formato decimal.
[ $# -eq 2 ] || {
echo "Uso: $0: <Numero> <Precisao>"
exit 1
}
int=${1%E*}
dec=${1#*E}
sinal='*'
[ $(echo $dec | cut -c1) = '-' ] && {
dec=$(echo $dec | cut -c2-)
sinal=/
}
echo "scale=$2; $int $sinal 10 ^ $dec" | bc
Abraços,
Julio Cezar Neves
Tel:+55 21 2555-6148 / +55 21 8112-9988
Fax: +55 21 2555-6154
http://www.julioneves.com
| -----Mensagem original-----
| De: Ricardo Acosta [mailto:address@hidden]
| Enviada em: quinta-feira, 1 de junho de 2006 12:15
| Para: address@hidden
| Assunto: [shell-script] notação científica - como lidar?
|
|
| Camaradas,
| vejam o seguinte arquivo:
| ....
| acosta@clima$ cat data1
| @ offline veg parameters for Forest
| @.. SOIL TYPE-DEPENDENT STATIC PARAMETERS---------------------(ISTYPE)
| zdepth 0.02
| extfrac 1.00
| bee 2.5
| phsat -0.2
| satco 5.00E-06
| poros 0.3500
| www 0.9000
| ...
|
| Preciso fazer variar cada parâmetro ( zdepth, extfrac, bee, phsat,
| satco, poros, www) em um certo intervalo, com incremento definido.
| até aih consegui resolver tranquilo.
| utilizando "for", "seq" e "awk". Script mostrado a seguir.
|
| No entanto pra resolver a substituição dos valores do
| parâmetro: "satco"
| complicou, pq ele está em um formato diferente!
|
| mesmo usando o "printf %E" (utilizado para notação científica).
| não obtive êxito. Visto que o "seq" não aceita este tipo de notação.
| alguém teria alguma sugestão?
|
| []s
| acosta
| .........
| acosta@clima$ cat temp.sh
| #!/bin/bash
| Parametro=zdepth
| ValorInicial=1
| ValorFinal=3
| Incremento=1
|
| for i in $(seq -w $ValorInicial $Incremento $ValorFinal)
| do
| awk -v param=$Parametro -v valor1=$i '
| { if( $1==param ) { $2 = valor1}
| print $0
| }' data1
| done
| .........
|
|
| ---------------------------------------------------------------------
| Esta lista não admite a abordagem de outras liguagens de
| programação, como perl, C etc. Quem insistir em não seguir
| esta regra será moderado sem prévio aviso.
| ---------------------------------------------------------------------
| Sair da lista: address@hidden
| ---------------------------------------------------------------------
| Esta lista é moderada de acordo com o previsto em
http://www.listas-discussao.cjb.net
---------------------------------------------------------------------
Servidor Newsgroup da lista: news.gmane.org
Grupo: gmane.org.user-groups.programming.shell.brazil
Links do Yahoo! Grupos
- RES: [shell-script] notação científica - como lidar?,
Julio Cezar Neves - DATAPREVRJ <=