Python - random-float mit begrenzten Dezimalstellen
Ich habe gerade herausgefunden, wie man Zufallszahlen in Python, aber wenn ich drucken Sie diese, Sie alle haben 15 Dezimalstellen. Wie behebe ich das?
Hier ist mein code:
import random
import os
greaterThan = float(input("Your number will be greater than: "))
lessThan = float(input("Your number will be less than: "))
digits = int(input("Your number will that many decimal digits: "))
os.system('cls')
if digits == 15:
print(random.uniform(greaterThan, lessThan))
if digits == 14:
print(random.uniform(greaterThan, lessThan))
if digits == 13:
print(random.uniform(greaterThan, lessThan))
if digits == 12:
print(random.uniform(greaterThan, lessThan))
if digits == 11:
print(random.uniform(greaterThan, lessThan))
if digits == 10:
print(random.uniform(greaterThan, lessThan))
*(dieser geht einfach weiter nach unten auf 0)
Ich weiß, Sie können tun, wie print("%.2" % someVariable)
aber die Zufallszahlen in Python erstellt, mit dieser Methode werden nicht gespeichert in der Variablen. Zumindest denke ich so.
Ich würde auch gerne wissen ob es eine Möglichkeit gibt, dass eine variable wählen Sie die Anzahl der Dezimalstellen, wie print("%." + digits % anotherVariable)
aber ich habe versucht tha aus und natürlich ist es fehlgeschlagen.
Ich habe wirklich keine Ahnung. Hoffentlich können Sie helfen.
Danke.
number/1000
Ihre
if
Blöcke haben alle die exakt gleichen Inhalt. Warum erwarten Sie, dass Sie sich anders Verhalten?Auch ist es nicht
print("%.2 % someVariable)
. Es ist print("%.2 % someExpression)
. Sie können die random.uniform(greaterThan, LessThan)
als Sie den Ausdruck.Danke. Ich habe nicht erwarten, dass Sie behhave anders. Ich wollte nur hinzufügen, das die "Differenz", aber ich wusste nicht wie, also habe ich diese Frage gestellt.
Wenn eine der nachfolgenden Antworten behebt Ihr Problem, sollten Sie es akzeptieren (klicken Sie auf das Häkchen neben der entsprechenden Antwort). Das bedeutet zwei Dinge. Es lässt jeden wissen, Ihre Frage wurde zu Ihrer Zufriedenheit gelöst, und es gibt die person, die hilft, Sie Kredit für den Beistand. Siehe hier für eine vollständige Erklärung.
InformationsquelleAutor SALZKARTOFFEEEL | 2015-07-23
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wenn Sie wollen sich zu nehmen, was Zahl, die Sie bekommen von
random.uniform
und es abschneiden, um die bestimmte Anzahl von Ziffern, die Sie verwenden können, dieround()
- Funktion.Es ermöglicht Ihnen, die Runde zu einer bestimmten Präzision. Zum Beispiel:
InformationsquelleAutor Morgan Thrapp
Können Sie auch mit float-Präzision mit
.format()
:Wo die
2
kann durch ersetzt werden, wie viele Ziffern nach der Dezimalstelle, die Sie wollen.InformationsquelleAutor kennes
Ich bin mir nicht sicher, was du meinst, durch "Fixierung", da das, was Sie sprechen, das ist ziemlich grundlegend für die Funktionsweise von Computern durchzuführen, was heißt floating-point Arithmetik.
Jedoch, dass gesagt, ich bin ziemlich sicher, dass Sie sich für die decimal-Modul:
Viel Glück!
Edit:
Nehmen einen zweiten Blick auf dein post, das fühlt sich wackelig. Ist das eine Hausaufgabe? Warum haben die
digits
variable überhaupt, wenn Sie nicht tun nichts mit seinem Wert? Sicher, Sie überprüfen es (immer und immer und immer wieder), aber Sie tun die gleiche Sache jeder Zeit.Wenn Sie tatsächlich tun, ist etwas anders für jeden Wert von
digits
, sollten Sie mit if-elif-else:Aber das ist hässlich, und Python ist eigentlich ziemlich (
import
).Ich tun, Sie ermutigen, Lesen Sie die floating-point Arithmetik link, da dies sehr wichtig zu verstehen, zumindest ein wenig.
InformationsquelleAutor Andy Kubiak