[erlang-questions] Bug in erlang?
Richard Carlsson
carlsson.richard@REDACTED
Sat Jul 13 14:33:14 CEST 2013
On 2013-07-13 06:33 , Mike Oxford wrote:
> From the command-line, everything is expected and looks correct...
>
> list_to_float(lists:flatten(io_lib:format("~.2f",[1.000000e+00]))).
> 1.00
>
> But inside of a .beam'd module...
> erlang:display(V),
>
> erlang:display(lists:flatten(io_lib:format("~.2f",[V]))),
> V2 =
> list_to_float(lists:flatten(io_lib:format("~.2f",[V]))),
> erlang:display(V2)
>
> gives...
>
> 1.000000e+00
> "1.00"
> 1.000000e+00
>
> So the interesting part is that it (list_to_float) works as expected
> in the shell, but not in a compiled .beam file.
It's not a problem with list_to_float - I'm sure it gives you the same
value in both cases. But in the first case you let the shell use its
default formatting of values to print the float, and in the second case
you use erlang:display(), which is a debugging function that always
prints floats in a fixed format. Try using erlang:display() on the
result on the command line and see, or use io:format(...) instead of
erlang:display() to show the result in the module.
To convince yourself further, you could use term_to_binary(V) on the
floats in both cases and print the binary representation (e.g. use
binary_to_list() and print the byte values).
/Richard
More information about the erlang-questions
mailing list