【问题标题】:int('1.5') VS float('1.5') in pythonpython 中的 int('1.5') VS float('1.5')
【发布时间】:2020-10-22 22:58:15
【问题描述】:

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

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

【问题讨论】:

  • 不,如果你想那样写int(float('1.5'))
  • @jonrsharpe 我知道int(float('1.5')) 有效,我想知道int('1.5') 错误的原因
  • 因为'1.5' 不是表示整数文字的字符串。

标签: python-3.x floating-point int valueerror


【解决方案1】:

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

来自docs

如果 x 不是一个数字或者如果给出了基数,那么 x 必须是一个字符串, 字节,或 bytearray 实例,表示基数中的整数文字 基地。

而整数字面量定义如下:

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

【讨论】:

  • Python 3.4 已经相当老了(并且已经过了生命周期的终结);我建议更新您的链接以指向较新的版本。
  • 这是一个最新的参考:docs.python.org/3/reference/…。请注意,它并不完全相同,因为 Python 现在支持整数文字中的下划线。
  • @MarkDickinson 谢谢,我已经更新了表格和网址!
猜你喜欢
  • 2019-08-25
  • 1970-01-01
  • 2014-01-13
  • 1970-01-01
  • 1970-01-01
  • 2014-05-25
  • 2023-03-05
  • 2013-02-13
  • 1970-01-01
相关资源
最近更新 更多