首页 > 解决方案 > 如何始终如一地确定我的 round.random.uniform 有多少位数?

问题描述

这段代码:

import random

while True:
    thing = str(round(random.uniform(1,3), 3))
    print(thing)

不是始终如一地生成带 3 位小数的数字,有时给我只有 2 位小数的数字。

输出示例:

1.575
2.035
2.864
2.118
1.069
2.36
1.092
1.948
2.54
2.224
2.318
1.713
1.819
2.717
1.171
2.918
3.0
1.23
2.487

我能够解决这个问题,创建一个例程来检查我的号码的长度,然后我附加一个由另一个随机生成的整数组成的字符串。喜欢

if len(thing) < 5:
    thing = thing + str(2)

但是,我想知道如何设置参数以始终生成具有固定长度的随机数。

提前致谢!

@Edit:感谢Harry和Peter,找到了解决方案。我通过以下方式控制号码的长度:

thing = round(random.uniform(1,3), 3)
hora = str(dt.datetime.now().strftime('%Y-%m-%d %H:%M:%S'))
pack = '{:.3f}'.format(thing) + ',' + hora
pack = str(pack)

标签: pythonrandom

解决方案


您一直在生成具有三位小数的数字,只是在某些情况下,这些小数位中的一个或多个是0. 默认情况下print,小数点后不显示尾随 0。例如,它可能会生成数字 2.360,但print会将其修剪为2.36. 如果您想始终以一定的小数位数显示数字,您可以使用格式字符串

print('{:.3f}'.format(thing))

这将2.360在我刚刚给出的示例中打印出来。


推荐阅读