如何生成一个随机数到2dp

时间:2019-07-10 17:54:57

标签: python decimal rounding

我正在尝试使用一个随机数生成器,该生成器将生成一个2dp的随机数,无论是否需要它。例如。 2.10是2.10而不是2.1,3 = 3.00

import random

temp_var_4_int = random.randint(2,5) + round(random.random(),2)

print (temp_var_4_int)

它应该将2到5之间的数字随机化,然后向其添加一个小数,该小数四舍五入到小数点后2位,但我不断得到诸如以下的答案:

1.2700000000000002而不是1.27

我不确定为什么会向我抛出这种异常。

4 个答案:

答案 0 :(得分:0)

假设您希望输入[0, 10]中的数字,您可以这样做:

from random import uniform

r = round(uniform(0, 10), 2)
print(f"{r:3.2f}")

如果r = 2.1格式字符串将其表示为"2.10";但出于所有数学目的,尾随零均无效。

答案 1 :(得分:0)

import random
print("Printing random float number with two decimal places is ",
      round(random.random(), 2))
print("Random float number between 2.5 and 22.5 with two decimal places is ",
      round(random.uniform(2.5,22.5), 2))

答案 2 :(得分:0)

尝试使用字符串格式:

from random import randint, random

temp_var_4_int = round(randint(2,5) + random(), 2)

print(temp_var_4_int)
print(f"{temp_var_4_int:.2f}")

这将输出如下内容:

2.1
2.10

请注意,f字符串可在Python 3.6+上运行

答案 3 :(得分:0)

您可以使用以下两位数字格式化浮点数:

import random

temp_var_4_int = random.randint(2,5) + round(random.random(),2)
temp_var_4_int = '%.2f' % (temp_var_4_int)
print(temp_var_4_int)

根据此Q&A

(0.1+.02)

将返回

0.12000000000000001

'%.2f' % (0.1+.02)

将返回

'0.12'

请尝试并让我知道,这是同一问题的另一个示例