web-dev-qa-db-ja.com

Python-小数点以下の桁数が制限されたランダムフロート

Pythonで乱数を作成する方法を見つけたばかりですが、それらを印刷すると、すべて10進数で15桁になります。どうすれば修正できますか?これが私のコードです:

_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))
_

*(これは0まで続きます)

print("%.2" % someVariable)のようにできることは知っていますが、このメソッドで作成された乱数Pythonは、どの変数にも保存されません。少なくともそう思います。私も知りたいです。 print("%." + digits % anotherVariable)のように、変数に小数点の量を選択させる方法がある場合、私はそれを試してみましたが、もちろん失敗しました。

本当にわからなかった。うまくいけば、あなたが助けることができます。ありがとう。

10
SALZKARTOFFEEEL

_random.uniform_から取得した数値を取得して特定の桁数に切り捨てる場合は、 round() function を使用できます。

特定の精度に丸めることができます。例えば:

_import random

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: "))

rounded_number = round(random.uniform(greaterThan, lessThan), digits)
print(rounded_number)
_
23
Morgan Thrapp

.format()を使用して浮動小数点精度を処理することもできます。

print float("{0:.2f}".format(random.uniform(greaterThan, lessThan)))

どこ 2は、必要な小数点以下の桁数に置き換えることができます。

3
kennes

あなたが話していることは、コンピュータがいわゆる 浮動小数点演算 を実行する方法のかなり基本的なものであるため、「それを修正する」とはどういう意味かわかりません。

しかし、そうは言っても、あなたが探しているのはかなり確信しています 10進モジュール

import decimal

頑張ってください!

編集:

あなたの投稿をもう一度見てみると、これは奇妙に感じます。これは宿題ですか?その値で何もしていないのに、なぜdigits変数があるのですか?確かに、あなたはそれを(何度も何度も)チェックしますが、あなたは毎回同じことをしています。

digitsの値ごとに実際に異なることをしている場合は、if-Elif-elseを使用する必要があります。

if digits == 15:
    do_stuff()
    ...
Elif digits == 14:
    do_other_stuff()
    ...
Elif digits == 13:
    do_even_moar_different()
    ...
...
else:
    and_now_for_something_completely_different()

しかし、それは醜いです、そしてPythonはきれいであるはずです( import this )。

if digits > some_value:
    do_stuff()
    ...
Elif digits <= some_other_value:
    do_something_else()
...

浮動小数点演算 リンクを読むことをお勧めします。これは、少なくとも少しは理解することが非常に重要だからです。

1
Andy Kubiak