这段代码:
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)发布于 2019-08-09 05:29:25
你一直在生成有三位小数的数字,只是在某些情况下,其中一个或多个小数位是0。默认情况下,print不会在小数点后显示尾随的0。例如,它可能会生成数字2.360,但print会将其修剪为2.36。如果您希望始终以特定的小数位数显示数字,则可以使用format string
print('{:.3f}'.format(thing))这将打印我刚才给出的示例中的2.360。
发布于 2019-08-09 06:02:59
另一种选择是在乘以10的幂(例如,1000)的范围内生成随机整数,然后将该随机整数除以相同的10的幂:
random.randrange(1000, 3000) / 1000但请注意,结果数是以2为基数的浮点数,这不是存储十进制数的理想方式。但是,Python有一个支持十进制数的标准库;要生成随机十进制数,只需导入decimal并从随机整数创建一个小数,如下所示:
from decimal import Decimal
frac = Decimal(1)/Decimal(1000)
Decimal(random.randrange(1000, 3000)) * frac( decimal库并不总是通过除以1000来显示小数点后的相同位数。)
https://stackoverflow.com/questions/57420686
复制相似问题