为什么在 Python 2.6 和 Python 2.7 中使用 Random.random() 时精度不同
例子:
import random
import sys
rng = random.Random(0)
print sys.version
for i in range(10):
print repr(rng.random())
2.6.6(r266:84297,2010 年 8 月 24 日,18:46:32)[MSC v.1500 32 位(英特尔)]
0.84442185152504812
0.75795440294030247
0.4205715808308452.7.5(默认,2013 年 5 月 15 日,22:43:36)[MSC v.1500 32 位(英特尔)]
0.8444218515250481
0.7579544029403025
0.420571580830845
为什么会有不同的精度?这可能是因为这种变化: http ://docs.python.org/2/tutorial/floatingpoint.html#representation-error
在 Python 2.7 和 Python 3.1 之前的版本中,Python 将此值四舍五入为 17 位有效数字,给出“0.10000000000000001”。在当前版本中,Python 显示基于正确四舍五入为真正二进制值的最短十进制小数的值,结果简单地为“0.1”。