首页 > Python > 如何将字符串解析为浮点数或整数?

如何将字符串解析为浮点数或整数?

上一篇 下一篇

  • 如何将 a 转换为 ?strfloat
    "545.2222"  →  545.2222
    
  • 如何将 a 转换为 ?strint
    "31"        →  31
    

相反,请参阅在 Python 中将整数转换为字符串和将浮点数转换为字符串而不对其进行舍入。

请改用 如何将输入读取为数字?关闭重复的问题,其中 OP 从用户输入中收到字符串并立即想要转换它,或者希望输入(在 3.x 中)自动转换类型。

分割线

网友回答:

def num(s):
    try:
        return int(s)
    except ValueError:
        return float(s)

分割线

网友回答:

>>> a = "545.2222"
>>> float(a)
545.22220000000004
>>> int(float(a))
545

分割线

网友回答:

Python2 方法检查字符串是否为浮点数:

def is_float(value):
  if value is None:
      return False
  try:
      float(value)
      return True
  except:
      return False

对于 Python3 版本的is_float请参阅:检查字符串是否可以在 Python 中转换为浮点数

此函数的更长和更准确的名称可以是:is_convertible_to_float(value)

什么是,什么是,不是 Python 中的浮点数可能会让你感到惊讶:

下面的单元测试是使用 python2 完成的。检查 Python3 对于哪些字符串可转换为浮点数有不同的行为。一个令人困惑的区别是,现在允许使用任意数量的内部下划线:为 True(float("1_3.4") == float(13.4))

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
"tn12rn"          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_2_3.4"             False        Underscores not allowed
"12 34"               False        Spaces not allowed on interior
"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(...)

模板简介:该模板名称为【如何将字符串解析为浮点数或整数?】,大小是暂无信息,文档格式为.编程语言,推荐使用Sublime/Dreamweaver/HBuilder打开,作品中的图片,文字等数据均可修改,图片请在作品中选中图片替换即可,文字修改直接点击文字修改即可,您也可以新增或修改作品中的内容,该模板来自用户分享,如有侵权行为请联系网站客服处理。欢迎来懒人模板【Python】栏目查找您需要的精美模板。

相关搜索
  • 下载密码 lanrenmb
  • 下载次数 201次
  • 使用软件 Sublime/Dreamweaver/HBuilder
  • 文件格式 编程语言
  • 文件大小 暂无信息
  • 上传时间 02-14
  • 作者 网友投稿
  • 肖像权 人物画像及字体仅供参考
栏目分类 更多 >
热门推荐 更多 >
微信文章 单页式简历模板 微信素材 响应式 微信公众平台 html5 自适应 企业网站 微信图片 微信模板
您可能会喜欢的其他模板