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 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