I agree - the three builtin methods are almost the same (not sure if
there is any difference at all), while there is no trivial way to check for a valid
float, or otherwise a chosen  representation of a decimal number without resorting 
to a try-except statement, or complicated verification schemes that have
to deal with a lot of corner cases. 
For validity one has to check if there are only digits - and decimal points -
and the "-" unary sign. What if there is more of a "." in the string?
what if the  "-" is not the first character? 

And besides validity checking, there are also validity choices:
 What if an unary "+" is present? Whitespace ok? "_" as digit separator ok?
scientific exponential notation accepted?  What about Inf and Nan literals?
What about taking into account the locale setting?

But maybe, instead of yet another str method, a "parsefloat" function
that could get arguments and sensitive defaults for some choices -
it could live in "math" or "numbers". 

I think it would be preferable than, say, adding a lot of options 
to the `float` constructor. These are the options I can think 
of the top of my mind:


def parsefloat(
        input: str,
        /, *,
        unary_minus: Bool = True,
        unary_plus: Bool = False,
        exponential: Bool = False,
        inf_literal: Bool = False,
        nan_literal: Bool = False,
        whitespace: Bool = False,
        use_locale: Bool = False,
        digit_separators: Bool = False,
        base: int = 10 (?),
        decimal_places: Optional[int]=None(?),
        enforce_decimal_places: Bool = False(?),
        raise_on_error: Bool = False(?),
        ...) -> Tuple[Bool, float]:

The return value would consitss of a boolean, where True would indicate success, and then the number.
Or it could return a single float, returning a NaN in case of parsing error.

this is simple callable - but it could be built on top of
a class that could take the configurations and parse
more than one number - it would be fit as a float parser
to be supplied for tasks like Json decoding, or 
converting values in a Pandas Series.  

On Sun, 27 Dec 2020 at 14:12, Tushar Sadhwani <tushar.sadhwani000@gmail.com> wrote:
str currently has methods like isdecimal, isnumeric and isdigit, but there isn't an isfloat check, which could be very handy.

a trivial implementation could be as simple as:

        return True
    except ValueError:
        return False
Python-ideas mailing list -- python-ideas@python.org
To unsubscribe send an email to python-ideas-leave@python.org
Message archived at https://mail.python.org/archives/list/python-ideas@python.org/message/KEUR54FVEE7FRY4RGLK4IGTJOTKXQH5H/
Code of Conduct: http://python.org/psf/codeofconduct/