les calculs en virgule flottante dans awk
Je suis surpris par le comportement de awk
lors de l'exécution de virgule flottante calculs. Il me conduire à des erreurs de calcul sur les données de la table.
$ awk 'BEGIN {print 2.3/0.1}'
23 <-- Ok
$ awk 'BEGIN {print int(2.3/0.1)}'
22 <-- Wrong!
$ awk 'BEGIN {print 2.3-2.2==0.1}'
0 <-- Surprise!
$ awk 'BEGIN {print 2.3-2.2>0.1}' <-- Din't produce any output :(
$ awk 'BEGIN {print 2.3-2.2<0.1}'
1 <-- Totally confused now ...
Quelqu'un peut-il jeter la lumière sur ce qui happing ici?
EDIT 1
Comme indiqué par @fedorqui, la sortie de la dernière commande va fichier nommé 0.1 en raison de opérateur de redirection (>).
Alors comment suis-je censé effectuer plus de (>) opération?
Solution, il est également donnée par @fedorqui
$ awk 'BEGIN {print (2.3-2.2>0.1)}'
0 <-- Wrong!
+1 pour la question intéressante. J'ai trouvé quelques infos --> gnu.org/software/gawk/manual/html_node/... Notez aussi que
J'ai également recherché sur ce sujet. Tout ce qu'ils disent est s'attendre à un comportement inattendu! Comment suis-je censé résoudre mon problème exactement? J'ai essayé de résoudre dans
merci pour cette remarque. J'ai mis à jour la question avec plus de requête!
Pour cela, je suppose que la solution est de faire
awk 'BEGIN {print 2.3-2.2>0.1}'
écrit le résultat de 2.3-2.2
dans un fichier avec 0.1
nom.J'ai également recherché sur ce sujet. Tout ce qu'ils disent est s'attendre à un comportement inattendu! Comment suis-je censé résoudre mon problème exactement? J'ai essayé de résoudre dans
perl
mais malheureusement elle aussi se conduit mal, peut-être de manière différente.merci pour cette remarque. J'ai mis à jour la question avec plus de requête!
Pour cela, je suppose que la solution est de faire
awk 'BEGIN {print (2.3-2.2>0.1)}'
. Pour le reste, je suis toujours en train de vérifier, c'est une juteuse.OriginalL'auteur jkshah | 2013-10-29
Vous devez vous connecter pour publier un commentaire.
La section suivante de la manuel devrait vous aider à comprendre les question vous êtes observation:
Vivement recommandé de lecture:
Ce que tout informaticien devez savoir à propos de l'arithmétique à virgule flottante
OriginalL'auteur devnull