Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/359.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
迭代列表时的Python精度?_Python_List_Floating Point_Decimal_Precision - Fatal编程技术网

迭代列表时的Python精度?

迭代列表时的Python精度?,python,list,floating-point,decimal,precision,Python,List,Floating Point,Decimal,Precision,我有一个迭代的值列表。当列表中的第n项定义iter循环内的变量时,它不代表原始列表项精度;因此,小数位数丢失 简单地打印列表中的每种项目类型都会返回浮点值,第n个项目类型也是如此,但是列表和第n个项目代表两个不同的值;一个小数位 必须避免这种情况,因为该值是在>=/中检查的。这种明显的精度变化是因为浮点表示可能包含比同一浮点表示更多的数字。直接打印的对象使用str,集合中的对象(如列表)使用repr。例: >>> repr(1/3.0) '0.3333333333333333'

我有一个迭代的值列表。当列表中的第n项定义iter循环内的变量时,它不代表原始列表项精度;因此,小数位数丢失

简单地打印列表中的每种项目类型都会返回浮点值,第n个项目类型也是如此,但是列表和第n个项目代表两个不同的值;一个小数位


必须避免这种情况,因为该值是在>=/中检查的。这种明显的精度变化是因为浮点表示可能包含比同一浮点表示更多的数字。直接打印的对象使用
str
,集合中的对象(如列表)使用
repr
。例:

>>> repr(1/3.0)
'0.3333333333333333'
>>> str(1/3.0)
'0.333333333333'
>>> print [1/3.0]
[0.3333333333333333]
>>> print 1/3.0
0.333333333333

。。。但请放心,即使表示形式不同,实际存储的值仍然相同。与>=比较,请用示例数字显示工作代码,这表明问题。我不是100%理解您的问题,但我认为值得一提的是,浮点数可以有不同的
str
repr
表示,因此根据是否直接打印浮点数,它看起来会有所不同,或者打印包含浮动的集合(如列表)。丹尼尔,这段代码是为一个独立的软件编写的:所以似乎不适合粘贴整个沙邦。凯文,听起来你的理解可能是我的问题——但正如马克所说,这不应该是问题,因为我正在使用Python 3+。@Kevin他们在Python 3中改变了这一点,
str
repr
给出了相同的位数。如果你对浮点数进行比较,请做好痛苦世界的准备。在StackOverflow上可以看到很多关于浮点精度的帖子。你的回复大大提高了我对这个问题的理解。也许在我的剧本中还有其他的遗漏。。。
>>> repr(1/3.0)
'0.3333333333333333'
>>> str(1/3.0)
'0.333333333333'
>>> print [1/3.0]
[0.3333333333333333]
>>> print 1/3.0
0.333333333333