int('1.5') VS float('1.5') in python



为什么float('1.5')按预期给出1.5作为输出,但int('1.5')给出值错误?

python不应该自动将字符串转换为浮点数,然后再转换为整数。

因为1.5不是int()函数所需的有效整数文本。

从文档中:

如果 x 不是数字或给出基数,则 x 必须是字符串, 字节,或字节数组实例,表示以基数为单位的整数文本 基础。

而整数文本定义如下:

integer      ::=  decinteger | bininteger | octinteger | hexinteger
decinteger   ::=  nonzerodigit (["_"] digit)* | "0"+ (["_"] "0")*
bininteger   ::=  "0" ("b" | "B") (["_"] bindigit)+
octinteger   ::=  "0" ("o" | "O") (["_"] octdigit)+
hexinteger   ::=  "0" ("x" | "X") (["_"] hexdigit)+
nonzerodigit ::=  "1"..."9"
digit        ::=  "0"..."9"
bindigit     ::=  "0" | "1"
octdigit     ::=  "0"..."7"
hexdigit     ::=  digit | "a"..."f" | "A"..."F"

来源: https://docs.python.org/3/reference/lexical_analysis.html#integers

最新更新