Runden bzw. Stellen ersetzten

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
eltukano
User
Beiträge: 2
Registriert: Donnerstag 26. Juli 2018, 13:18

Hallo liebe Community,

ich habe die Suchfunktion genutzt aber nichts entsprechendes gefunden.

Ich muss eine zufällige Zahl (Eingabe) immer auf die nächste höhere Potenz "aufrunden".

Bsp:

7 > 10
19> 100
78 > 100
992 > 1000

Ich dachte über ein Erstellen einer Liste und ersetzen der Stellen durch 9ner nach und anschließend +1
Nur leider übersteigt das meinen aktuellen Wissenstand.

Oder gibt es ggfls. eine andere einfachere Idee/Herangehensweise?

Für jede Hilfe bin ich dankbar!
Boa
User
Beiträge: 190
Registriert: Sonntag 25. Januar 2009, 12:34

Eine andere Möglichkeit wäre eine Schleife die eine Variable mit dem Anfangswert 1 bei jeder Iteration jeweils mit 10 multipliziert und diese ausgibt (und aufhört) falls die variable größer als deine Eingabe ist.
Benutzeravatar
__blackjack__
User
Beiträge: 14031
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

Wie wäre es mit ``10**math.ceil(math.log10(x))``?

Edit: Die 0 muss gesondert behandelt werden.
„A life is like a garden. Perfect moments can be had, but not preserved, except in memory. LLAP” — Leonard Nimoy's last tweet.
Sirius3
User
Beiträge: 18266
Registriert: Sonntag 21. Oktober 2012, 17:20

@__blackjack__: ich hätte noch ein `int` spendiert: 10**int(math.ceil(math.log10(x)))

Wenn man konsquenterweise 0.00023 auch auf die nächst höhere Zehnerpotenz rundet, dann wird die Interpretation bei 0 schwierig.
eltukano
User
Beiträge: 2
Registriert: Donnerstag 26. Juli 2018, 13:18

die 0 könnte man ja umgehen wenn man abfragt ob die Eingabe == 0 ist und wenn ja, dann eben +1... dann wäre ich ja auch bei meiner gewünschten 10..
Antworten