Re: float_to_list(X)
Bob Ippolito <[email protected]>
| Newsgroups | gmane.comp.lang.erlang.general |
|---|---|
| Message-ID | <CACwMPm9HhOidaNKAvRhMkV-DiEDkOFY+EVcmgpMo1YUeSff+7Q@mail.gmail.com> |
~p is a lossless format for floats that uses a conservative number of digits (since R12B02). See OTP-7084. The implementation was based on mochinum:digits/1 from mochiweb. On Fri, May 7, 2021 at 03:26 Richard O'Keefe <[email protected]> wrote: > No, making float_to_list/1 a wrapper for format... does not make sense. > float_to_list/1 is meant to give you an accurate representation of the > value. Two different floats, no matter how small the difference, > should result in different lists. It's meant for converting a float > to text that you can send to another machine and reconstitute the > same value there. This will usually result in more digits than a human > would normally want to see. > > If you *want* format ~p, use it! > > Now perhaps there might be an argument to be made for > float_to_list(X: number(), N: integer()) -> string() > returning a string that represents X as accurately as > possible using N digits. But that is another discussion. > > On Thu, 6 May 2021 at 20:56, Themba Jonga <[email protected]> wrote: > >> Hi, again. >> >> Following a response I got from Dmitry Klionsky, perhaps it makes sense >> for *float_to_list(N)* to be made into a wrapper for >> *lists:flatten(io_lib:format("~p",[N]))?* >> >> Eshell V11.1 (abort with ^G) >> 1> N = 4.4445. >> 4.4445 >> 2> lists:flatten(io_lib:format("~p",[N])). >> "4.4445" >> 3> P = 5.4443. >> 5.4443 >> 4> lists:flatten(io_lib:format("~p",[P])). >> "5.4443" >> 5> Q = 1.2345678. >> 1.2345678 >> 6> lists:flatten(io_lib:format("~p",[Q])). >> "1.2345678" >> 7> float_to_list(Q). >> "1.23456779999999999298e+00" >> 8> >> >> Regards >> >> *Themba Jonga* >> >> >> >> >> <http://www.avg.com/email-signature?utm_medium=email&utm_source=link&utm_campaign=sig-email&utm_content=webmail> Virus-free. >> www.avg.com >> <http://www.avg.com/email-signature?utm_medium=email&utm_source=link&utm_campaign=sig-email&utm_content=webmail> >> <#m_4119889666038623623_m_-2114829433146319840_m_1222824999368714802_DAB4FAD8-2DD7-40BB-A1B8-4E2AA1F9FDF2> >> >> On Wed, 5 May 2021 at 18:38, Scott Ribe <[email protected]> >> wrote: >> >>> > On May 5, 2021, at 10:20 AM, [email protected] wrote: >>> > >>> > In short, no. >>> >>> Although many (most, actually nearly all) real numbers cannot be >>> represented precisely as a float, any float can be round-tripped to text >>> and back exactly. This is part of the IEEE floating point standard, >>> actually. (And it's not easy...) >>> >>> >>> >> >> <http://www.avg.com/email-signature?utm_medium=email&utm_source=link&utm_campaign=sig-email&utm_content=webmail> Virus-free. >> www.avg.com >> <http://www.avg.com/email-signature?utm_medium=email&utm_source=link&utm_campaign=sig-email&utm_content=webmail> >> <#m_4119889666038623623_m_-2114829433146319840_DAB4FAD8-2DD7-40BB-A1B8-4E2AA1F9FDF2> >> >