浮点数字

Lok*_*oko 11 python floating-point

所以我正在阅读这个名为"学习Python第四版"的PDF教程.现在我找到了一个我不理解的部分,因为我几乎是Python的初学者.我在谈论这部分:

在此输入图像描述

现在我没有得到第一个例子的解释.它确实说: It turns out that there are two ways to print every object: with full precision(as in the first result shown here)

但这是怎么回事with full precision

它可能只是很容易解释文本中的python程序员,但我似乎没有得到它.

kwa*_*ord 13

这不是Python问题,而是浮点数性质的问题.事实证明,计算机不能代表数字.谁知道?

如果你有时间,我建议阅读每个计算机科学家应该知道的关于浮点运算的内容.

现在,至于实际的Python方面,每个对象都有一个被调用的方法__str__和一个被调用的方法__repr__.这些应该产生在各种情况下显示的字符串.如果您在任何对象上使用内置函数reprstr函数,或者在字符串格式中使用"%r""%s"格式,您将看到这些.在交互式提示符下评估某些内容时repr,默认情况下会得到.当您传递某些内容时print,str默认情况下会获得.

浮点数对象__repr__的定义方式是以最大精度(至少可以达到十进制)来表示它们,而它们__str__的定义方式使得它们看起来更像是你想要向用户显示的内容.用户不想知道浮点数不是实数,因此它不会向它们显示额外的精度.


lee*_*dam 3

基本上,计算机的浮点计算存在舍入误差。所以如果你执行1.*1000./1000.,你最终可能会得到1.0000004类似的结果。这是计算机存储在内存中的内容。但是,您可能不希望看到计算结果为 1.0000004。因此,当您打印结果时,计算机会进行舍入,您将得到简单的1。但您必须知道,它不是计算机内存中的真实值 - 它只是实际浮点数的舒适可视化。