Comparação entre número flutuantes dentro do if

1. Comparação entre número flutuantes dentro do if

Rodrigo Santos Mendes da Rocha
rodrigodoug

(usa Debian)

Enviado em 27/06/2016 - 20:28h

Prezados,

preciso fazer uma comparação entre números flutuantes dentro do if.
Por exemplo,

if [ 1.1 -gt .45 ] && [ 1.1 -lt 2.9 ]
then
...
fi


No caso do meu programa eu já tentei...

if [ "${restogpsweek[0]} -gt 0.1" ] && [ "${restogpsweek[0]} -lt 2.2" ]
if [ "${restogpsweek[0]} -gt 0.1" | bc ] && [ "${restogpsweek[0]} -lt 2.2" | bc ]
if [ `echo "${restogpsweek[0]} -gt 0.1" | bc` ] && [ `echo "${restogpsweek[0]} -lt 2.2" | bc` ]

e outras "n" outras coisas e não descobri...
Alguém saberia informar como realizar essas comparações?
Abraços





  


2. Re: Comparação entre número flutuantes dentro do if

Marcelo Oliver
msoliver

(usa Debian)

Enviado em 27/06/2016 - 21:53h

rodrigodoug escreveu:

Prezados,

preciso fazer uma comparação entre números flutuantes dentro do if.
Por exemplo,

if [ 1.1 -gt .45 ] && [ 1.1 -lt 2.9 ]
then
...
fi


No caso do meu programa eu já tentei...

if [ "${restogpsweek[0]} -gt 0.1" ] && [ "${restogpsweek[0]} -lt 2.2" ]
if [ "${restogpsweek[0]} -gt 0.1" | bc ] && [ "${restogpsweek[0]} -lt 2.2" | bc ]
if [ `echo "${restogpsweek[0]} -gt 0.1" | bc` ] && [ `echo "${restogpsweek[0]} -lt 2.2" | bc` ]

e outras "n" outras coisas e não descobri...
Alguém saberia informar como realizar essas comparações?
Abraços

_____________________________________________________________________
Boa noite.
Segue uma sugestão:
awk -F" " '{if($1>$2) printf "0\n";else printf "1\n"}' <<< "1.8 0.9" 


Att.:
Marcelo Oliver




3. Re: Comparação entre número flutuantes dentro do if

Raimundo Alves Portela
rai3mb

(usa Outra)

Enviado em 28/06/2016 - 18:33h

vc pode usar o bc.

Exemplo:

$ echo "1 > 1.45 && 1.1 < 2.9" | bc
0
$ echo "1 > .45 && 1.1 < 2.9" | bc
1


* Atentar que o resultado da expressão vai ser 0 false e 1 para verdadeiro.

man bc:

expr1 < expr2
The result is 1 if expr1 is strictly less than expr2.

expr1 <= expr2
The result is 1 if expr1 is less than or equal to expr2.

expr1 > expr2
The result is 1 if expr1 is strictly greater than expr2.

expr1 >= expr2
The result is 1 if expr1 is greater than or equal to expr2.

expr1 == expr2
The result is 1 if expr1 is equal to expr2.

expr1 != expr2
The result is 1 if expr1 is not equal to expr2.




4. Re: Comparação entre número flutuantes dentro do if





Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts