如何检查字符串是否表示浮点数

时间:2016-03-05 00:29:04

标签: python decimal

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

if(width.isnumeric() == 1)

3 个答案:

答案 0 :(得分:15)

最简单的方法是使用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')

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

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

答案 1 :(得分:7)

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

答案 2 :(得分:0)

这里是另一种没有“try”的解决方案,它直接返回一个真值。感谢@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