Wenn mehrere Pipe-Befehle für dieselbe Eingabe großer Zahlen mit vielen Ziffern verwendet werden, welche Auswirkungen hat das auf die Genauigkeit der Zahlen? Werden sie abgeschnitten? Beachten Sie, dass ich mehrfach gesagt habe, da die Eingabe verwendet und dann wiederverwendet wird. Unter der Annahme, dass die für die Eingabe verwendeten Funktionen die Genauigkeit der Zahlen nicht beeinflussen, hat „Pipe |“ dann Auswirkungen darauf?
Außerdem ist meine Annahme, dass Funktionen Aktionen bei der Eingabe großer Zahlen mit vielen Ziffern ausführen, falsch. Wenn Funktionen awk enthalten, ist meine Annahme falsch. Was ist mit „sed“?
Antwort1
Hier haben wir fünf Pipes und wie Sie sehen können, sind die ausgehenden Zeichen genau dieselben wie die eingehenden Zeichen:
$ echo '1.23456789012345678901234567890' | cat | cat | cat | cat | cat
1.23456789012345678901234567890
Pipes übertragen Zeichenunverändert. In der Pipe ist es egal, ob eine Zeichenfolge eine Zahl darstellt oder nicht. Für eine Pipe ist alles nur eine Zeichenfolge.
Antwort2
Ein Rohr
cmd1 | cmd2
ruft die Standardausgabe des Befehls cmd1 ab und gibt sie unverändert an die Standardeingabe des Befehls cmd2 weiter. Dabei wird zwar eine Pufferung angewendet (was man daher im Hinterkopf behalten sollte, wenn man mit großen E/A-Vorgängen arbeitet und Echtzeitergebnisse benötigt), es werden jedoch keine mathematischen Operationen ausgeführt und die Zahlengenauigkeit wird in keiner Weise beeinträchtigt.