python浮点,为什么打印结果不同(给出的例子)?

时间:2017-02-24 19:20:52

标签: list printing floating-point tuples precision

a =(random.random(),random.random())

打印(a)中

打印(A [0])

结果是:

  
    
      

(0.4817527913069962,0.7017598562799067)

             

0.481752791307

    
  

打印元组后会发生什么额外的事情(列表的类似行为)?为什么会有额外的分数?

非常感谢。

顺便说一下,这是python 2.7

1 个答案:

答案 0 :(得分:4)

您看到的是str(float)repr(float)所做的格式选择之间的区别。在Python 2.x中,str(float)返回12位数,而repr(float)返回17位数。在交互模式下,Python使用str()来格式化结果。这可以解释格式化浮点数时的12位精度。但是当结果是元组或列表时,字符串格式化逻辑使用repr()来格式化每个元素。

repr(float)的输出必须能够转换回原始值。使用17位数的精度保证了这种行为。 Python 3使用更复杂的算法,返回最短的字符串,该字符串将往返回原始值。由于repr(float)经常会返回更友好的结果,因此str(float)已更改为与repr(float)相同。