LilAznMVP89 126 Report post Posted November 24, 2004 How can I fix my compareTo method so that it correctly compares rational numbers. When it compares something like 8/6 to 9/3, it says 8/6 is bigger. public String compareTo (Rational op2) { String result = "Bye Bye"; System.out.println(); if (numerator > op2.getNumerator() && denominator > op2.getDenominator()) System.out.println ("First fraction is larger than second fraction. " + numerator + "/" + denominator); else if (numerator < op2.getNumerator() && denominator < op2.getDenominator()) System.out.println ("Second fraction is larger than first fraction. " + op2.getNumerator() + "/" + op2.getDenominator()); else System.out.println ("Both are equal."); return result; } Thanks :) 0 Share this post Link to post Share on other sites
tHiSiSbOb 463 Report post Posted November 24, 2004 If I understand your question correctly: you can just evaluate the fraction and then use simple boolean statements...float test1=numerator1/denominator1;float test2=numerator2/denominator2;if(test1>test2){//The first fraction is larger}else if(test2>test1){//second fraction is larger}else{//they are equal} 0 Share this post Link to post Share on other sites
Fruny 1658 Report post Posted November 24, 2004 Two fraction a/b and c/d. Compare a*d to c*b. (i.e. multiply both fractions by b*d). 0 Share this post Link to post Share on other sites
choffstein 1090 Report post Posted November 24, 2004 Essentially what fruny said. Just get them over a common denominator. But basically, then you just have to compare the numerators. So multiply each numerator by the other fractions denominator, and compare. Roight! 0 Share this post Link to post Share on other sites
grim_reaper7 103 Report post Posted November 24, 2004 put fraction in decimal form(i.e. do division put into diff. variable) before you compare it...it will be easier i believe..but then again i am a newbie 0 Share this post Link to post Share on other sites
TheBluMage 372 Report post Posted November 24, 2004 The method Fruny posted is a bit more reliable than converting to floating-point numbers. Sometimes, even if two floats/doubles should be equal, they end up being slightly different due to rounding errors. The multiplication method is probably a little faster too, since you don't have to convert four integers to floating-point, but I haven't tested it so don't hold me to that.[wink] 0 Share this post Link to post Share on other sites
LucidIon 198 Report post Posted November 25, 2004 Where nominators and denominators are small multiplication is more accurate, where they are large floating point is more accurate - overflow means that the multiplication method is more accurate until it is actually wrong (65535*65536 is (potentially) a large, negative number on a 32bit two's complement processor.IEEE floating point is specified not to wraparound IIRC, which I think makes it say that two very large numbers are equal. 0 Share this post Link to post Share on other sites