[erlang-questions] convert strings like "1e-8" to floats.

Richard Carlsson carlsson.richard@REDACTED
Wed Feb 8 16:42:07 CET 2017


Both the NNN_NNN and the Base#NNN notation go back to Ada, so they are not
particular either for OCaml or Erlang, respectively.
http://archive.adaic.com/standards/83lrm/html/lrm-02-04.html


        /Richard

2017-02-08 16:35 GMT+01:00 Jesper Louis Andersen <
jesper.louis.andersen@REDACTED>:

> Another example is OCaml, which supports entering integers as
>
> # 1_000_000;;
> - : int = 1000000
>
> which is very nifty, but unique to OCaml and thus not too portable.
>
> On Wed, Feb 8, 2017 at 12:16 PM Mikael Pettersson <mikpelinux@REDACTED>
> wrote:
>
>> Oleksii Semilietov writes:
>>  > Hi all!
>>  >
>>  > I playing with converting binaries and lists to floats and I found
>>  > something what I can't solve via elegant way. I believe it's my
>> leakage of
>>  > understanding floats.
>>  >
>>  > So, what is different between 1e-8 and 1.0e-8 ?
>>  >
>>  > For example we have float as list "0.01".  It is easy to convert it to
>>  > float just via list_to_float("0.01").
>>  > But when floats coming from external world as binaries or lists which
>> looks
>>  > like "1e-8", and not like "1.0e-8", I can't find proper way to convert
>> it.
>>  >
>>  > For example in PHP both 1e-8 and 1.0e-8 is equivalent
>>  > var_dump(floatval("1e-8") === floatval("1.0e-8")) returns true.
>>  > Javascript 1E-8 === 1.0E-8 is also true.
>>  >
>>  > In Erlang
>>  >
>>  > list_to_float("1.0E-8") =:= 0.00000001
>>  > true
>>  >
>>  > but
>>  >
>>  > list_to_float("1E-8") =:= 0.00000001.
>>  > ** exception error: bad argument in function list_to_float/1 called as
>>  > list_to_float("1E-8")
>>  >
>>  >
>>  > How to convert it via right way?
>>
>> Write your own conversion routine.
>>
>> Your mistake is assuming literals like floats have the same look and feel
>> regardless of language or environment.  That's in general not true.
>>
>> You may also consider the different notation for integers with non-decimal
>> base, e.g. 0xabba vs 16#abba, or character literals, etc.
>>
>> What it means is that a tool written in one language but processing source
>> code for another, must be prepared to do all conversions on its own
>> without
>> relying on ready-made services in the implementation language.
>> _______________________________________________
>> erlang-questions mailing list
>> erlang-questions@REDACTED
>> http://erlang.org/mailman/listinfo/erlang-questions
>>
>
> _______________________________________________
> erlang-questions mailing list
> erlang-questions@REDACTED
> http://erlang.org/mailman/listinfo/erlang-questions
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://erlang.org/pipermail/erlang-questions/attachments/20170208/f4539486/attachment.htm>


More information about the erlang-questions mailing list