Hallo ich bin hier neu,
ich habe ein Array in dem Höhendaten enthalten sind. Nun möchte ich die Auflösung gröber machen, sprich, die Höhe 1435,12m soll auf 1440m gerundet werden, oder 1354,21m zu 1350m. Mit der Funktion round() bekomme ach alles hinter dem Komma gerundet, aber wie bekomme ich es nun hin das er mir alles auf die nächste 10ner Stelle rundet.
Danke schon einmal für die Hilfe
Max
Auf nächste 10ner-Stelle aufrunden
Hallo 'hier neu',
ein kleiner Denkanstoß:
ein kleiner Denkanstoß:
Code: Alles auswählen
In [1]: 1435/100*100
Out[1]: 1400
In [2]:
- Defnull
- User
- Beiträge: 778
- Registriert: Donnerstag 18. Juni 2009, 22:09
- Wohnort: Göttingen
- Kontaktdaten:
Je nach Geschmack kann man auch mit Modulo arbeiten.
Dann ist man auch bei Floats auf der sicheren Seite.
Es ist sogar einen Tick schneller:
Eine Warnung noch: Die hier genannten Tricks runden alle immer ab. Wenn du natürlich runden willst (ab 0.5 aufrunden), dann musst du schon round() nehmen. Xynon1 hat ja schon auf den zweiten Parameter hingewiesen:
Code: Alles auswählen
>>> 1234/100*100
1200
>>> 1234 - 1234%100
1200
Code: Alles auswählen
>>> 1234.0/100*100
1234.0
>>> 1234.0 - 1234.0%100
1200.0
Code: Alles auswählen
>>> min(timeit.repeat('1234/100*100', repeat=100))
0.23580193519592285
>>> min(timeit.repeat('1234 - 1234%100', repeat=100))
0.10858011245727539
Code: Alles auswählen
>>> round(1358, -1)
1360.0
>>> round(1358, -2)
1400.0
>>> round(1358, -3)
1000.0
Bottle: Micro Web Framework + Development Blog
Hi,
hab mir mal selber für ein ähnliches Problem folgendes geschrieben:
Das ganze ist gedacht für folgendes:
1234,123m +- 11m
-> Signifikante des Fehlers hohlen und dann auf die Signifikante des eigentlichen Wertes runden sodass am Ende raus kommt:
1230m+-10m
hab mir mal selber für ein ähnliches Problem folgendes geschrieben:
Code: Alles auswählen
def round_sig(x, n):
"""Returns x rounded to n significant figures."""
return round(x, int(n - math.ceil(math.log10(abs(x)))))
def get_sig(x):
"""Return postion of significant figure"""
i = 0
if x <= 1:
while (10**i) * x < 1:
i += 1
else:
while (10**(-i+1))* x > 1:
i += 1
return i
1234,123m +- 11m
-> Signifikante des Fehlers hohlen und dann auf die Signifikante des eigentlichen Wertes runden sodass am Ende raus kommt:
1230m+-10m