Mailing-List: contact cygwin-help AT cygwin DOT com; run by ezmlm List-Subscribe: List-Archive: List-Post: List-Help: , Sender: cygwin-owner AT cygwin DOT com Delivered-To: mailing list cygwin AT cygwin DOT com Message-ID: <79218202D4B9D4118A290002A508E13B79C373@PNZEXCHANGE> From: Ross Smith To: "'Chuck Allison'" , cygwin AT cygwin DOT com Subject: RE: Strange behavior Date: Mon, 4 Mar 2002 15:04:43 +1300 MIME-Version: 1.0 X-Mailer: Internet Mail Service (5.5.2653.19) Content-Type: text/plain; charset="iso-8859-1" > From: Chuck Allison [mailto:cda AT freshsources DOT com] > > I have a simple Rational number class and have discovered > weird behavior > with Cygwin's g++. If you look at the very short main program in file > rtest2.cpp, you will see by the output that g++ get's the > wrong answer for > > r1 / r2 == Rational(2,3); // should be true > > even though it prints as 2/3! Borland and Microsoft get it > right. Any ideas? > All code atached. [relevant bit of code] inline bool operator==(const Rational& r1, const Rational& r2) { return r1.toDouble() == r2.toDouble(); } This is nothing to do with Cygwin, or g++ for that matter. You're comparing floating point numbers. Of course it's not reliable! If other compilers happened to give you an exact equality on that particular combination of arguments, it was pure luck. -- Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple Bug reporting: http://cygwin.com/bugs.html Documentation: http://cygwin.com/docs.html FAQ: http://cygwin.com/faq/