On Fri, Oct 01, 2021 at 08:56:39AM -0000, dpali...@outlook.com wrote:

> It would be nice to have a string method that checks for a float. 
> Currently there is no support for this, either built-in or in the 
> standard library. There is a thread, dating back to Dec 2020, that 
> proposes a trivial implementation for str.isfloat . I was thinking of 
> a method that did more.

Given the design you gave for this function, how would you use it?

    s = input("Enter a number: ")  # Or some other string
    three_way_flag = isfloat(s)  # Or s.isfloat()
    if three_way_flag is None:
        raise ValueError("Not a number!")
    elif three_way_flag:
        num = int(s)
    else:
        num = float(s)

Or did I get the true/false flags the wrong way around. I forget.

Seems unnecessarily awkward and inefficient. Why not just have a 
function which takes a string and returns either an int or a float, 
whichever is appropriate?

That function is pretty easy to write. And as Dennis mentions, there are 
many possible variations. What if you want a Decimal or a Fraction, 
or a complex number? What if you want to return a NAN instead of raising 
an exception? 

I'm also unsure when I might care about preserving the type of the 
number in this way. Typically I'm expecting to work with either floats 
or ints. If I'm working with ints, then a float would be an error, and I 
should just call `int(s)` and if the string contains a decimal point, 
that will be an error. If I'm working with floats, then just calling 
`float(s)` will have exactly the same effect as calling `int(s)` and 
then doing float arithmetic on it.

Well, not *quite* exactly.

    s = '1234567890'*100
    x = float(s)*1.0
    y = int(s)*1.0

Calculating x will give the float INF; calculating y will raise 
OverflowError.

So I think that this sort of function to preserve the type of the 
numeric string is going to have a very limited use.

-- 
Steve
_______________________________________________
Python-ideas mailing list -- python-ideas@python.org
To unsubscribe send an email to python-ideas-le...@python.org
https://mail.python.org/mailman3/lists/python-ideas.python.org/
Message archived at 
https://mail.python.org/archives/list/python-ideas@python.org/message/HSUFQJ2BREL2ON43UKIHDUC6INCBNEPC/
Code of Conduct: http://python.org/psf/codeofconduct/

Reply via email to