我刚刚发现了如何在Python中创建随机数,但如果我将它们打印出来,它们都有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)
,但我试过了,当然它失败了。
我真的不知道。希望你能提供帮助。 感谢。
答案 0 :(得分:18)
如果您想从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)
答案 1 :(得分:3)
您还可以使用.format()
处理浮点精度:
print float("{0:.2f}".format(random.uniform(greaterThan, lessThan)))
2
可以替换为您想要的小数点后的位数。
答案 2 :(得分:1)
我不确定“修复它”是什么意思,因为你所谈论的内容对于计算机如何执行所谓的floating-point arithmetic非常重要。
然而,那说,我很确定你正在寻找decimal module:
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()
...
我建议您阅读floating-point arithmetic链接,因为这一点非常重要,至少可以理解一下。