如何将字符串解析为浮点型或整型?
2022-09-05 00:46:44
- 如何将 a 转换为 ?
str
float
"545.2222" → 545.2222
- 如何将 a 转换为 ?
str
int
"31" → 31
str
float
"545.2222" → 545.2222
str
int
"31" → 31
>>> a = "545.2222"
>>> float(a)
545.22220000000004
>>> int(float(a))
545
def is_float(value):
try:
float(value)
return True
except:
return False
此函数的更长、更准确的名称可以是:is_convertible_to_float(value)
val is_float(val) Note
-------------------- ---------- --------------------------------
"" False Blank string
"127" True Passed string
True True Pure sweet Truth
"True" False Vile contemptible lie
False True So false it becomes true
"123.456" True Decimal
" -127 " True Spaces trimmed
"\t\n12\r\n" True whitespace ignored
"NaN" True Not a number
"NaNanananaBATMAN" False I am Batman
"-iNF" True Negative infinity
"123.E4" True Exponential notation
".1" True mantissa only
"1,234" False Commas gtfo
u'\x30' True Unicode is fine.
"NULL" False Null is not special
0x3fade True Hexadecimal
"6e7777777777777" True Shrunk to infinity
"1.797693e+308" True This is max value
"infinity" True Same as inf
"infinityandBEYOND" False Extra characters wreck it
"12.34.56" False Only one dot allowed
u'四' False Japanese '4' is not a float.
"#56" False Pound sign
"56%" False Percent of what?
"0E0" True Exponential, move dot 0 places
0**0 True 0___0 Exponentiation
"-5e-5" True Raise to a negative number
"+1e1" True Plus is OK with exponent
"+1e1^5" False Fancy exponent not interpreted
"+1e1.3" False No decimals in exponent
"-+1" False Make up your mind
"(1)" False Parenthesis is bad
你认为你知道什么是数字吗?你并不像你想象的那么好!不大惊喜。
以这种方式捕获广泛的异常,杀死金丝雀并吞噬异常会产生一个很小的机会,即有效的浮点数作为字符串将返回false。代码行可能由于与字符串内容无关的一千个原因中的任何一个而失败。但是,如果你正在用像Python这样的鸭子打字原型语言编写生命关键型软件,那么你就有更大的问题了。float(...)