[erlang-questions] Behaviour of list_to_float(...)

Rudolph van Graan rvg@REDACTED
Tue Jul 3 13:28:55 CEST 2007

Hi all,

list_to_float is not behaving correctly in my view, even though it  
may be behaving according to the erlang documentation

1> list_to_float("0.1").
2> list_to_float("0.0").
3> list_to_float("0").

=ERROR REPORT==== 3-Jul-2007::13:11:30 ===
Error in process <0.34.0> with exit value: {badarg, 

** exited: {badarg,[{erlang,list_to_float,["0"]},
                     {shell,eval_loop,3}]} **

According to IEEE 754 the number 0 is also a float, namely the  
fraction is 0 and the exponent is also zero, albeit with a sign bit.

I Think the correct behaviour should have been:

list_to_float("0") = 0.0 as The code clearly indicates that we want  
the result to be a float.

To me, the behaviour that makes sense is that list_to_float always  
succeeds if the argument is a number so we can avoid having to write  
code like this:

safe_float(S) ->
     error:badarg ->

I think it should also work for list_to_float("1") etc...

Can someone please explain the rationale behind this behaviour?

Rudolph van Graan

More information about the erlang-questions mailing list