如何检查字符串是不是代表浮点数

Posted

技术标签:

【中文标题】如何检查字符串是不是代表浮点数【英文标题】:How to check if a string represents a float number如何检查字符串是否代表浮点数 【发布时间】:2016-06-18 22:07:56 【问题描述】:

我正在使用它来检查变量是否为数字,我还想检查它是否为浮点数。

if(width.isnumeric() == 1)

【问题讨论】:

您希望33.5 进行同一张支票吗? isinstance(width, type(1.0)) 适用于 python 2.7 Check if a number is int or float的可能重复 @JGreenwell: width.isnumeric() 暗示width 是一个字符串。他不是在检查一个实数是否是一个浮点数。他正在检查是否可以将 string 转换为浮点数。 @zondo 为什么这是一个提示?我已经为我开发的许多项目使用了不同的宽度值(从浮点数到整数) - 除了at least one of the answers 可以检查字符串 【参考方案1】:

最简单的方法是使用float()将字符串转换为浮点数:

>>> float('42.666')
42.666

如果它不能转换为浮点数,你会得到一个ValueError

>>> float('Not a float')
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ValueError: could not convert string to float: 'Not a float'

使用try/except 块通常被认为是处理此问题的最佳方法:

try:
  width = float(width)
except ValueError:
  print('Width is not a number')

请注意,您还可以在 float() 上使用 is_integer() 来检查它是否为整数:

>>> float('42.666').is_integer()
False
>>> float('42').is_integer()
True

【讨论】:

添加一个try/except ...但是是的,这是最正确的答案,恕我直言:) 使用is_integer() 来区分整数和浮点数是一个不错的选择。【参考方案2】:
def is_float(string):
  try:
    return float(string) and '.' in string  # True if string is a number contains a dot
  except ValueError:  # String is not a number
    return False

输出:

>> is_float('string')
>> False
>> is_float('2')
>> False
>> is_float('2.0')
>> True
>> is_float('2.5')
>> True

【讨论】:

不太好,见***.com/questions/379906/parse-string-to-float-or-int【参考方案3】:

这里是另一个没有“尝试”的解决方案,它直接返回一个真值。感谢@Cam Jackson。我在这里找到了这个解决方案:Using isdigit for floats?

这个想法是在使用 isdigit() 之前精确删除 1 个小数点:

>>> "124".replace(".", "", 1).isdigit()
True
>>> "12.4".replace(".", "", 1).isdigit()
True
>>> "12..4".replace(".", "", 1).isdigit()
False
>>> "192.168.1.1".replace(".", "", 1).isdigit()
False

【讨论】:

以上是关于如何检查字符串是不是代表浮点数的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Typescript 中检查字符串是不是为数字/浮点数? [复制]

Python如何检查列表中的项目是不是为浮点数,如果是,将其更改为字符串? [复制]

检查字符串是不是可以在 Python 中转换为浮点数

如何检查一个值是不是是javascript中的浮点数[重复]

如何检查浮点数是不是在 Postgres 的多个范围之间?

如何检查字符串是浮点数还是整数?