+++ /dev/null
-package tim.prune.drew.jpeg;\r
-\r
-/**\r
- * Immutable class for holding a rational number without loss of precision.\r
- * Based on Drew Noakes' Metadata extractor at http://drewnoakes.com\r
- */\r
-public class Rational\r
-{\r
- /** Holds the numerator */\r
- private final int _numerator;\r
-\r
- /** Holds the denominator */\r
- private final int _denominator;\r
-\r
- /**\r
- * Constructor\r
- * @param inNumerator numerator of fraction (upper number)\r
- * @param inDenominator denominator of fraction (lower number)\r
- */\r
- public Rational(int inNumerator, int inDenominator)\r
- {\r
- // Could throw exception if denominator is zero\r
- _numerator = inNumerator;\r
- _denominator = inDenominator;\r
- }\r
-\r
-\r
- /**\r
- * @return the value of the specified number as a <code>double</code>.\r
- * This may involve rounding.\r
- */\r
- public double doubleValue()\r
- {\r
- if (_denominator == 0) return 0.0;\r
- return (double)_numerator / (double)_denominator;\r
- }\r
-\r
- /**\r
- * @return the value of the specified number as an <code>int</code>.\r
- * This may involve rounding or truncation.\r
- */\r
- public final int intValue()\r
- {\r
- if (_denominator == 0) return 0;\r
- return _numerator / _denominator;\r
- }\r
-\r
- /**\r
- * @return the denominator.\r
- */\r
- public final int getDenominator()\r
- {\r
- return _denominator;\r
- }\r
-\r
- /**\r
- * @return the numerator.\r
- */\r
- public final int getNumerator()\r
- {\r
- return _numerator;\r
- }\r
-\r
- /**\r
- * Checks if this rational number is an Integer, either positive or negative\r
- * @return true if an integer\r
- */\r
- public boolean isInteger()\r
- {\r
- // number is integer if the denominator is 1, or if the remainder is zero\r
- return (_denominator == 1\r
- || (_denominator != 0 && (_numerator % _denominator == 0)));\r
- }\r
-\r
-\r
- /**\r
- * @return a string representation of the object of form <code>numerator/denominator</code>.\r
- */\r
- public String toString()\r
- {\r
- return "" + _numerator + "/" + _denominator;\r
- }\r
-\r
-\r
- /**\r
- * Compares two <code>Rational</code> instances, returning true if they are equal\r
- * @param inOther the Rational to compare this instance to.\r
- * @return true if instances are equal, otherwise false.\r
- */\r
- public boolean equals(Rational inOther)\r
- {\r
- // Could also attempt to simplify fractions to lowest common denominator before compare\r
- return _numerator == inOther._numerator && _denominator == inOther._denominator;\r
- }\r
-}
\ No newline at end of file