[PYTHON] Berechnung des schwebenden Bruchs des Befehls awk

Hallo Im Befehl awk stimmt das Ergebnis einer schwebenden Bruchberechnung wie "Echo 2.3 | awk" ($ 1 * 100)% 10 == 0 "" nicht mit der genauen Berechnung überein (diese Bedingung ist "") $ 1 * 100 ist nicht `` `230 aber falsch).

$ echo 2.3 | awk '($1*100)%10==0'
$
$ diff -u <(seq 2 .1 3) <(seq 2 .01 3 | awk '($1*100)%10==0')
 2
 2.1
-2.2
-2.3
 2.4
 2.5
 2.6
$

Das gleiche gilt für Python, daher scheint es nicht nur mit awk ein Problem zu sein.

$ diff -u <(seq 2 .1 3) <(seq 2 .01 3 | python3 -c 'import sys; [print(i, end="") for i in sys.stdin if (float(i)*100)%10==0]')
 2
 2.1
-2.2
-2.3
 2.4
 2.5
 2.6
$

Problemumgehung

Ich habe einen Weg gefunden, die Bedingung als "int ($ 1 * 100 + 0,5)% 10 == 0" zu schreiben, und in diesem Beispiel wurde eine Übereinstimmung erhalten.

$ echo 2.3 | awk 'int($1*100+0.5)%10==0'
2.3
$ diff -q <(seq 2 .1 3) <(seq 2 .01 3 | awk 'int($1*100+0.5)%10==0')
$

Recommended Posts

Berechnung des schwebenden Bruchs des Befehls awk
Befehl für das aktuelle Verzeichnis Python
Fragen Sie mit dem Befehl bc nach Pi
Berechnungsergebnis nach dem Dezimalpunkt in Python
Gleitkommazahl Polizei 24:00
Hier finden Sie die Menge an freiem Speicher des Befehls free
Gleitkommazahlen entsprechen nicht der Minderheit der Dezimalzahlen
Installieren Sie den Befehl pip
Ihr eigener Koredake ist ein Linux-Befehl
Suchen Sie unter Linux über die Befehlszeile nach großen Dateien