2024-05-19 02:09:36 发布
网友
有人能解释为什么我不能用int()把一个用字符串科学符号表示的整数转换成一个pythonint?
int()
int
例如,这不起作用:
print int('1e1')
但这确实:
print int(float('1e1')) print int(1e1) # Works
为什么int不将字符串识别为整数?当然它和检查指数符号一样简单吗?
在幕后,科学数字记法总是在内部表示为浮点数。原因是变化的数字范围作为一个整数只映射到一个固定值范围,比方说2^32值。科学表征类似于具有显著性和指数性的浮动表征。您可以在https://en.wikipedia.org/wiki/Floating_point中查找更多详细信息。
2^32
不能将科学数字表示形式直接转换为字符串或整数。
print int(1e1) # Works
工作是因为1e1作为数字已经是浮点数。
1e1
>>> type(1e1) <type 'float'>
回到你的问题:我们想从float或scientific字符串中得到一个整数。详细信息:https://docs.python.org/2/reference/lexical_analysis.html#integers
>>> int("13.37") Traceback (most recent call last): File "<stdin>", line 1, in <module> ValueError: invalid literal for int() with base 10: '13.37'
对于浮点或科学表示,必须使用float上的中间步骤。
float
因为在Python中(至少在2.x中,因为我不使用Python 3.x),int()在字符串和数值上的行为不同。如果输入字符串,Python将尝试将其解析为基10int
int ("077") >> 77
但是如果您输入一个有效的数值,则python将根据它的基和类型解释它并将其转换为基10 int。然后python将首先将077作为基8进行interperet,并将其转换为基10,然后int()将jsut显示它。
077
int (077) # Leading 0 defines a base 8 number. >> 63 077 >> 63
因此,int('1e1')将尝试将1e1解析为基10字符串,并抛出ValueError。但是1e1是一个数值(数学表达式):
int('1e1')
ValueError
1e1 >> 10.0
所以int将把它当作一个数值来处理,并将其转换为float(10.0),然后将其解析为int。所以Python将首先解释1e1,因为它是一个numric值,并计算10.0,然后int()将其转换为整数。
float(10.0)
10.0
因此,使用字符串值调用int(),必须确保字符串是有效的10进制整数值。
非常简单的解决方案
print(int(float(1e1)))
步骤:- 1-首先将科学值转换为浮点值。 2-将浮点值转换为int。 3-很好你终于可以得到int数据类型了。
在幕后,科学数字记法总是在内部表示为浮点数。原因是变化的数字范围作为一个整数只映射到一个固定值范围,比方说
2^32
值。科学表征类似于具有显著性和指数性的浮动表征。您可以在https://en.wikipedia.org/wiki/Floating_point中查找更多详细信息。不能将科学数字表示形式直接转换为字符串或整数。
工作是因为
1e1
作为数字已经是浮点数。回到你的问题:我们想从float或scientific字符串中得到一个整数。详细信息:https://docs.python.org/2/reference/lexical_analysis.html#integers
对于浮点或科学表示,必须使用
float
上的中间步骤。因为在Python中(至少在2.x中,因为我不使用Python 3.x),如果输入字符串,Python将尝试将其解析为基10int()
在字符串和数值上的行为不同。int
但是如果您输入一个有效的数值,
则python将根据它的基和类型解释它并将其转换为基10 int。然后python将首先将077
作为基8进行interperet,并将其转换为基10,然后int()
将jsut显示它。因此,
int('1e1')
将尝试将1e1
解析为基10字符串,并抛出ValueError
。但是1e1
是一个数值(数学表达式):所以所以Python将首先解释1e1,因为它是一个numric值,并计算int
将把它当作一个数值来处理,并将其转换为float(10.0)
,然后将其解析为int。10.0
,然后int()
将其转换为整数。因此,使用字符串值调用
int()
,必须确保字符串是有效的10进制整数值。非常简单的解决方案
步骤:- 1-首先将科学值转换为浮点值。 2-将浮点值转换为int。 3-很好你终于可以得到int数据类型了。
享受吧
相关问题 更多 >
编程相关推荐