Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 15 Jan 2018 17:38:54 +0300
From:      Yuri Pankov <yuripv@icloud.com>
To:        freebsd-current <freebsd-current@freebsd.org>
Subject:   inconsistent for() and while() behavior when using floating point
Message-ID:  <6c423dbf-cd85-3c93-41e4-3362c06dfbb7@icloud.com>

next in thread | raw e-mail | index | archive | help
Hi,

Looking at https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=217149, I 
noticed that it isn't a seq(1) problem per se, rather for() and while() 
loops behaving inconsistently while using floating point, i.e.:

         double i;

         for (i = 1; i <= 2.00; i += 0.1)
                 printf("%g\n", i);

would produce:

         1
         ...
         1.9

but:

         double i;

         for (i = 1; i <= 2; i += 0.2)
                 printf("%g\n", i);

would correctly end with 2:

         1
         ...
         2

$ cc -v
FreeBSD clang version 6.0.0 (branches/release_60 321788) (based on LLVM 
6.0.0)
Target: x86_64-unknown-freebsd12.0
Thread model: posix
InstalledDir: /usr/bin

though gcc 4.4.4 on illumos behaves the same.

Is this a known problem with loops and floating point numbers?



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?6c423dbf-cd85-3c93-41e4-3362c06dfbb7>