Python 2.7 和 3.3.2,为什么 int('0.0') 不起作用?

2022-01-13 00:00:00 python string integer type-conversion

问题描述

正如标题所说,在 Python 中(我在 2.7 和 3.3.2 中尝试过),为什么 int('0.0') 不起作用?它给出了这个错误:

As the title says, in Python (I tried in 2.7 and 3.3.2), why int('0.0') does not work? It gives this error:

ValueError: invalid literal for int() with base 10: '0.0'

如果您尝试 int('0')int(eval('0.0')) 它会起作用...

If you try int('0') or int(eval('0.0')) it works...


解决方案

只是因为 0.0 不是以 10 为底的有效整数.而 0 是.

Simply because 0.0 is not a valid integer of base 10. While 0 is.

阅读 int() 这里.

int(x, base=10)

int(x, base=10)

将数字或字符串 x 转换为整数,或返回如果没有给出参数,则为 0.如果 x 是一个数字,它可以是一个普通的整数、长整数或浮点数.如果 x 是浮动的点,转换截断为零.如果论据是在整数范围之外,函数返回一个长对象.

Convert a number or string x to an integer, or return 0 if no arguments are given. If x is a number, it can be a plain integer, a long integer, or a floating point number. If x is floating point, the conversion truncates towards zero. If the argument is outside the integer range, the function returns a long object instead.

如果 x 不是一个数字或者如果给出了基数,那么 x 必须是一个字符串或者Unicode 对象,表示以基数为基础的整数文字.可选地,文字可以在前面加上 + 或 - (中间没有空格之间)并被空格包围.一个 base-n 文字由数字 0 到 n-1,其中 a 到 z(或 A 到 Z)的值是 10 到 35.默认基数为 10.允许的值为 0 和 2-36.基数 2,-8,和 -16 字面值可以选择以 0b/0B、0o/0O/0 或0x/0X,与代码中的整数文字一样.Base 0 表示解释字符串与整数文字完全一样,因此实际基数为 2、8、10 或 16.

If x is not a number or if base is given, then x must be a string or Unicode object representing an integer literal in radix base. Optionally, the literal can be preceded by + or - (with no space in between) and surrounded by whitespace. A base-n literal consists of the digits 0 to n-1, with a to z (or A to Z) having values 10 to 35. The default base is 10. The allowed values are 0 and 2-36. Base-2, -8, and -16 literals can be optionally prefixed with 0b/0B, 0o/0O/0, or 0x/0X, as with integer literals in code. Base 0 means to interpret the string exactly as an integer literal, so that the actual base is 2, 8, 10, or 16.

相关文章