Seite 1 von 1

Runden bzw. Stellen ersetzten

Verfasst: Freitag 27. Juli 2018, 10:30
von eltukano
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!

Re: Runden bzw. Stellen ersetzten

Verfasst: Freitag 27. Juli 2018, 10:49
von Boa
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.

Re: Runden bzw. Stellen ersetzten

Verfasst: Freitag 27. Juli 2018, 10:58
von __blackjack__
Wie wäre es mit ``10**math.ceil(math.log10(x))``?

Edit: Die 0 muss gesondert behandelt werden.

Re: Runden bzw. Stellen ersetzten

Verfasst: Freitag 27. Juli 2018, 11:03
von Sirius3
@__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.

Re: Runden bzw. Stellen ersetzten

Verfasst: Freitag 27. Juli 2018, 11:09
von eltukano
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..