我遇到将浮动值四舍五入到大于1的十进制数的问题。
def float_generator(size=6, chars = 6):
return random.uniform(size,chars)
我试过
target.write(str(float_generator(7,3)))
以上返回随机浮点数为1十进制数,如1.2222,1.3333333 我想生成7位小数和3位,如7,3
所示 我尝试在下面进行四舍五入。它取而代之的是点数。 target.write(str(format(float_generator(7,3),'.3f')))
请问我如何实现12345432.123而不是1.222343223?任何帮助将不胜感激。
答案 0 :(得分:0)
这是一个适合您的解决方案:
import random
def float_generator(size = 6, chars = 6):
return round(random.uniform(10**(size-1),10**(size)), chars)
称之为:
float_generator(7,3)
输出示例:
2296871.988
或更好:
float_generator = lambda size, chars: round(random.uniform(10**(size-1),10**(size)), chars)
以同样的方式打电话。
答案 1 :(得分:0)
如果您希望对小数位进行微调,可以使用decimal
和random
返回Decimal
对象:
import random, decimal
digits = list('0123456789')
def float_generator(size = 6, chars = 6):
base_str = ''.join(random.choice(digits) for i in range(size))
dec_str = ''.join(random.choice(digits) for i in range(chars))
return decimal.Decimal(base_str + '.' + dec_str)
>>> float_generator(7,3)
Decimal('4768087.977')
Decimal
个对象可以被送到浮动:
>>> float(decimal.Decimal('4768087.977'))
4768087.977
如果你总是想要一个浮点数,你可以用以下函数替换函数的最后一行:
return float(decimal.Decimal(base_str + '.' + dec_str))