So behalten Sie die ursprünglichen Dezimalzahlen bei, ohne sie zu runden

So behalten Sie die ursprünglichen Dezimalzahlen bei, ohne sie zu runden

Ich versuche, die Summe der Reisedistanz zu berechnen, und sie wird in der Textdatei perfekt berechnet. Die Ergebnisse würden jedoch auf 4 Dezimalstellen gerundet werden

Wenn ich beispielsweise versuche, 10,1361234 und 10,1461621 Meter aus dem Distanzprotokoll hinzuzufügen, wird anstelle des ursprünglichen Ergebnisses von 20,2822855 das Ergebnis wie unten gezeigt gerundet.

Gesamtdistanz.txt

2021-04-09 13:44:26 Total distance: 20.2823 meters

EntfernungsLog.txt

2021-04-09 12:31:55 Distance travelled: 10.1361234 meters
2021-04-09 12:31:55 Distance travelled: 10.1461621 meters

Ich wollte jedoch die ursprünglichen Dezimalwerte beibehalten, ohne sie zu runden. Gibt es eine Möglichkeit, dies zu tun? Unten ist mein Code angehängt

#!/bin/bash

SUM=0;


<DistanceLog.txt >> totaldistance.txt awk '{ SUM+=$6 } END{ print date_time,echo"Total distance:", SUM,distance }' date_time="$(date +'%F %T')" distance="meters"

Danke schön!

Antwort1

Wenn Sie in dieawkman-Seite, die Standardeinstellungawk OFMTist %.6g(6 gibt die Anzahl der signifikanten Ziffern an); Sie können es ändern in: .6fgibt die Anzahl der Ziffern nach dem Komma an, oder %fohne Begrenzung. Also:

<infile >>outfile awk '{ SUM+=$5 }
END{ OFMT="%.6f"; print date_time, "Total distance:", SUM, distance }' \
     date_time="$(date +'%F %T')" distance="meters"

verwandte Informationen