type comparisons

Denton Cockburn diboss at hotmail.com
Sat Jan 26 14:47:12 PST 2008


Jérôme M. Berger Wrote:

> -----BEGIN PGP SIGNED MESSAGE-----
> Hash: SHA1
> 
> Denton Cockburn wrote:
> > On Sat, 26 Jan 2008 18:36:41 +0000, BCS wrote:
> > 
> >> Reply to Denton,
> >>
> >>> [quoted text muted]
> >> rounding error?
> >>
> >> rounding 0.6584 (base 10) to real and then converting to double may round 
> >> different than rounding it directly to double.
> > 
> > I can't think of a reason that would be acceptable.
> > This means I can't reliably do operations with converted reals/doubles :(
> > 
> > This is also weird:
> > double a = 0.65;
> > real b = a + 0.1;
> 	Here, you're computing "a + 0.1" using double, then converting it
> to real
> 
> > b -= 0.1;
> > assert(b == a); // fails
> > 
> > real c = a;
> > c += 0.1;
> 	Here, you converted a to real, then you add 0.1 using real.
> 
> > c -= 0.1;
> > assert(c == a); // passes
> 
> 	Which could explain that rounding errors wind up different and make
> one assertion pass while the other fails.
> 
> 		Jerome
> - --
> +------------------------- Jerome M. BERGER ---------------------+
> |    mailto:jeberger at free.fr      | ICQ:    238062172            |
> |    http://jeberger.free.fr/     | Jabber: jeberger at jabber.fr   |
> +---------------------------------+------------------------------+
> -----BEGIN PGP SIGNATURE-----
> Version: GnuPG v1.4.7 (GNU/Linux)
> 
> iD8DBQFHm4y1d0kWM4JG3k8RAgfQAKC3LwsQfklEVT+cP2w3HrR/xtK6JACfdPr9
> PQIwRTbf2zyhpst9zdeZn9s=
> =RA4Q
> -----END PGP SIGNATURE-----

The problem I'm having is that we are comparing the same numerical value for equality, and getting a (logically) false result.


More information about the Digitalmars-d-learn mailing list