Ich muss die Differenz einer gegebenen Sequenz von Dezimalzahlen dynamisch ermitteln. Die Reihenfolge gegeben:Ermitteln der Differenz der Dezimalfolge dynamisch
my_seq <- seq(0, 10, 0.1)
Wo 0,1 kann eine beliebige Dezimalstelle (0,01, 0,5), aber bin mit 0.1 für das Beispiel. Mein Versuch, um festzustellen, dass die Granularität 0,1:
# Generating sequence.
my_seq <- seq(0, 10, 0.1)
# Attempting to find difference.
uni_diff <- unique(diff(my_seq))
print(uni_diff) # Will be multiple, due to floating point behavior.
# Printing out uni_diff for visualization.
print(sprintf("%.54f", uni_diff))
Wie am Ende erwähnt, meine differenzier aufgrund fehlschlägt, wie Gleitkommazahlen in Computern verarbeitet werden, „Circle 1“ in der R Inferno http://www.burns-stat.com/pages/Tutor/R_inferno.pdf
sehenGibt es einen zuverlässigen Weg, dies zu tun? Ich kann den Benutzer zwingen, mir die Granularität zu sagen, die funktioniert, aber aus der gegebenen Sequenz automatisch bestimmen könnte.
EDIT:
weiter um mein Problem veranschaulichen. Nehmen wir an, ich gab Ihnen:
x = c(0.1, 0.2, 0.3)
Und dann gefragt, wie Sie feststellen, dass 0,1 der Unterschied zwischen jeder Zahl ist. Wie würde das gemacht werden? Es ist trivial für ganze Zahlen, aber nicht für Gleitkommawerte.
Danke.
I verstehst du nicht: suchst du * genau * 0,1? Es existiert nicht. Um sich davon zu überzeugen, renne 'print (sprintf ("%. 54f ", 0.1))'. –
Wenn Sie über einen "guten" Wert besorgt sind, um kleinere Abrundungsunterschiede zu behandeln, versuchen Sie 'mean (diff (my_seq))' – G5W
Ich versuche zu bestimmen, was das "von" von einer gegebenen Dezimalfolge ist. Zum Beispiel, wenn gegeben (0,1, 0,2, 0,3) wie viel sind diese segmentiert von? Gleitkomma-Probleme machen dies schwierig. Ich weiß nicht 0.1 im Voraus. – giraffehere