![]() |
|
|
Google unix.com
|
|||||||
| Foren | Registrieren | Forum-Regeln | Links | Alben | FAQ | Benutzerliste | Kalender | Suche | Die heutige Beiträge | Alle Foren als gelesen markieren |
| UNIX für Fortgeschrittene und Experten Expert-to-Experte. Erfahren Sie fortgeschrittene UNIX-, UNIX-Kommandos, Linux-Betriebssysteme, System-Administration, Programmierung, Shell, Shell-Skripte, Solaris, Linux, HP-UX, AIX, OS X, BSD. |
![]() |
|
|
LinkBack | Thread Tools | Suche diesen Thread | Rate Thread | Anzeige-Modi |
|
|
|
||||
|
awk Hilfe
Hi
In "meine Datei gibt es 4 Spalten, die Felder Menge, aber ich bin immer unterschiedliche Mengen mit dem unter den awk-F "|" "(a + \u003d $ 1 + $ 2 + $ 3 + $ 4) END (printf ("% f \ n ", a))"-Datei 1123337200682,226562 awk 'BEGIN (FS \u003d OFS \u003d"|"} (for (i \u003d 1; i <\u003d NF; i + +) (a + \u003d $ i; n + +)) END (printf ( "% f \ n", a)) " Datei 1123337200684,453613 Danke, MR |
|
||||
|
Willkommen in der wunderbaren Welt der Floating-Point-Arithmetik.
Zunächst einmal, awk verwendet double precision floating point für die interne Darstellung der Zahlen. Die übliche Begrenzung der doppelten presision ist 15-stellig. Sie drucken 19 - brauchen Sie alle von ihnen? Sie können, so kann es mehr als 15 sein. Weiter ist die Art und Weise der Ausführung dieser awk fp fügt hinzu, ist möglicherweise die Ursache des Problems. Für $ 1 + $ 2 ..... es ist wahrscheinlich vorübergehende Lagerung und sich Zwischenziele Beträge. Die anderen Schleife wahrscheinlich eine einfache Ergänzung, mit nur einem temporären Speicher aus. Ungenauigkeit in der Darstellung von Zahlen erhöht, wie Sie Schritt durch Zwischen-Werte und Beträge. Die Zwischen-Werte, desto mehr mögliche Fehlerquellen. Der andere Punkt ist, dass awk atof hat, um für jede Anzahl heißt es in. Die tatsächliche Zahl in den Speicher möglicherweise nicht exakt darstellbar in fp, und da Sie arbeiten in der Nähe der Grenze mit doppelter Genauigkeit, ein paar tausend der kleinen Fehler stellt eine Veränderung in der Größenordnung von einer ganzen Reihe. Es ist nicht die Schuld von awk, es hat zu tun mit der Art, wie FP-Nummern arbeiten. Sie können schriftlich ein BC-Skript, das im Allgemeinen nicht besser auf grosse Zahlen. Sie können auch versuchen, eine einfache C ca. mit langen Doppel-Datentypen. |
![]() |
| Lesezeichen |
| Thread Tools | Suche diesen Thread |
| Anzeige-Modi | Rate this thread |
|
|