int()不适用于浮点数?

ned*_*004 1 python floating-point int python-3.x

我最近在Python 3.5中遇到过这个问题:

>>> flt = '3.14'
>>> integer = '5'
>>> float(integer)
5.0
>>> float(flt)
3.14
>>> int(integer)
5
>>> int(flt)
Traceback (most recent call last):
  File "<pyshell#7>", line 1, in <module>
    int(flt)
ValueError: invalid literal for int() with base 10: '3.14'
Run Code Online (Sandbox Code Playgroud)

为什么是这样?似乎应该回归3.我做错了什么,或者这是否有充分理由?

Li3*_*357 5

int()期望包含整数文字的数字或字符串.根据Python 3.5.2文档:

如果X不是数字或如果给出,则X必须是一个字符串,bytesbytearray表示文字的整数实例基数基.(重点补充)

含义int()只能转换包含整数的字符串.你可以轻松地做到这一点:

>>> flt = '3.14'
>>> int(float(flt))
3
Run Code Online (Sandbox Code Playgroud)

这将转换flt为float,然后有效,int()因为它是一个数字.然后它将通过删除小数部分转换为整数.