2017-10-11 83 views
0

我有这样的代码:LEN()返回不正确的值

print(len(str(0.000110011001100110011001100110011001100110011001100))) 

,这回22 然而,当我有这样的代码:

print(len("0.000110011001100110011001100110011001100110011001100")) 

这回53 为什么?

+7

你检查过什么'str(0.000110011001100110011001100110011001100110011001100)'是? – user2357112

+1

您创建了一个浮动对象;这是*不是字符串*。该浮点对象的字符串表示形式不包含尽可能多的数字,因为浮点数值是一个近似值,并且根本没有精确度来捕获该值*精确*。 –

回答

5

Python无法存储无限精度的浮点数。它们在一定的值后被截断。要了解更多,你可以check out the documentation

str(0.000110011001100110011001100110011001100110011001100) 

第一个Python会解释0.000110011001100110011001100110011001100110011001100作为一个浮点数,然后将其转换为字符串。

事实证明,0.000110011001100110011001100110011001100110011001100被解释为0.00011001100110011001,然后将其转换为22个字符的字符串。