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