James Hague <>
Wed Aug 9 20:06:49 CEST 2006

Actually list_to_number would be a good standard library addition.  It would
call list_to_integer first, then if that failed, call list_to_float.

-----Original Message-----
From:  [mailto:] On
Behalf Of Håkan Stenholm
Sent: Wednesday, August 09, 2006 12:56 PM
To: Demius Academius
Subject: Re: list_to_float

Demius Academius wrote:

> list_to_float("0") exited with badarg
> it must work as list_to_float("0.0")
you'll have to do something like:

str_to_float(Str) ->
    try float(list_to_integer(Str))
    catch error:_ -> list_to_float(Str)


str_to_float(Str) ->
    case string:to_float(Str) of
       {error, no_float} ->
             {Int, []} = case string:to_integer(Str),
       {Float, []} -> Float

as "0" is considered a integer(), while "0.0" is treated as a float(). 
But I agree that it would be much nicer if list_to_float/1 and 
string:to_float/1 would do this by themselves.

More information about the erlang-bugs mailing list