为什么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