Floating point behavior in Python 2.6 vs 2.7
所以我将介绍python 2.6解释器,并得到:
1 2 3 4 5 6 7 8 9 | Python 2.6.6 (r266:84292, Nov 22 2013, 12:16:22) [GCC 4.4.7 20120313 (Red Hat 4.4.7-4)] on linux2 Type"help","copyright","credits" or"license" for more information. >>> 2.1 2.1000000000000001 >>> 2.2 2.2000000000000002 >>> 2.2 2.2000000000000002 |
但是在Python2.7中,我得到了更多类似人类的结果,如下所示:
1 2 3 4 5 6 7 8 9 10 | Python 2.7.5+ (default, Sep 19 2013, 13:48:49) [GCC 4.8.1] on linux2 Type"help","copyright","credits" or"license" for more information. >>> 5.4 5.4 >>> 1.1 1.1 >>> 0.2 0.2 >>> |
我想问一下为什么会发生这种情况,我怎么可能使python 2.6的行为类似于2.7呢?
python 2.7中的
要在python 2.6中获得相同的结果,您必须自己格式化字符串:
1 | '%.12g' % fp_value |
或使用
1 | format(fp_value, '.12g') |
注意,在python 2.7中,只有表示形式发生了变化,而不是实际值。浮点值仍然是实数的二进制近似值,二进制分数并不总是与所表示的确切数字相加。
如果需要比