Re: float_to_list(X)
"Richard O'Keefe" <[email protected]>
| Newsgroups | gmane.comp.lang.erlang.general |
|---|---|
| Message-ID | <CABcYAd+8sNVdTxBUa0Z6DL3pVm87pby3xEm+59Ee5tA8emcMnQ@mail.gmail.com> |
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_-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_-2114829433146319840_DAB4FAD8-2DD7-40BB-A1B8-4E2AA1F9FDF2> >