# [erlang-questions] Strange arithmetic behaviour

Matthias Lang <>
Thu May 8 10:58:05 CEST 2008

```Gurgen Tumanian writes:

> There is some kind of strange behaviour that i have noticed when dealing
> with big float values.

This problem is not a "big nasty bug", it's a fundamental consequence
of the way floating point numbers are commonly represented. It is
basically unrelated to Erlang, you'll get the same behaviour in C, for
instance.

Your first subtraction is a textbook example of the relative error
growing dramatically when you subtract two large numbers which are
close together.

This wikipedia article is a quick introduction to the topic:

http://en.wikipedia.org/wiki/Floating_point

Matt

----------------------------------------------------------------------

> For example:
>
>  123123123123123123123.0 - 123123123123123123121.0 is 0.00000e+0  when i
> expect 2.0 or  something like that in e notation.
> I found this kind of errors with round() and trunc(). for example:
> trunc(1233333333333333123333333333.12311111111) is
> 1233333333333333065680814080.
> or
> round(1233333333333333123333333333.12311111111) is
> 1233333333333333065680814080.
>
> furthermore
> 1233333333333333123333333333.12311111111 =
> 123333333333333312367575676573.92311111111 matches
>
>
> I have tested this on R11-B5 and on R12-B1
>
> Is this a big nasty bug, or am i missing something?
>
> Regards
> Gurgen Tumanyan
> Smart Tech
> Dear all.<br><br>There is some kind of strange behaviour that i have noticed when dealing with big float values.<br>For example:<br><br> 123123123123123123123.0 - 123123123123123123121.0 is 0.00000e+0  when i expect 2.0 or  something like that in e notation.<br>
> I found this kind of errors with round() and trunc(). for example: <br>trunc(1233333333333333123333333333.12311111111) is 1233333333333333065680814080.<br>or<br>round(1233333333333333123333333333.12311111111) is 1233333333333333065680814080.<br>
> <br>furthermore <br>1233333333333333123333333333.12311111111 = 123333333333333312367575676573.92311111111 matches<br><br><br>I have tested this on R11-B5 and on R12-B1<br><br>Is this a big nasty bug, or am i missing something?<br>
> <br>Regards<br>Gurgen Tumanyan<br>Smart Tech<br><br><br><br>
> _______________________________________________
> erlang-questions mailing list
>
> http://www.erlang.org/mailman/listinfo/erlang-questions

```