Class RationalNumber
java.lang.Object
java.lang.Number
org.apache.commons.imaging.common.RationalNumber
- All Implemented Interfaces:
- Serializable
Rational number, as used by the TIFF image format.
 
The TIFF format specifies two data types for rational numbers based on a pair of 32-bit integers. Rational is based on unsigned 32-bit integers and SRational is based on signed 32-bit integers. This treatment is problematic in Java because Java does not support unsigned types. To address this challenge, this class stores the numerator and divisor in long (64-bit) integers, applying masks as necessary for the unsigned type.
- See Also:
- 
Field SummaryFieldsModifier and TypeFieldDescriptionfinal longfinal longstatic final intfinal boolean
- 
Constructor SummaryConstructorsConstructorDescriptionRationalNumber(int numerator, int divisor) Constructs an instance based on signed integersRationalNumber(int numerator, int divisor, boolean unsignedType) Constructs an instance supports either signed or unsigned integers.
- 
Method SummaryModifier and TypeMethodDescriptiondoublefloatintintValue()longnegate()Negates the value of the RationalNumber.toString()static RationalNumbervalueOf(double value) Calculate rational number using successive approximations.Methods inherited from class java.lang.NumberbyteValue, shortValue
- 
Field Details- 
SHALLOW_SIZE- See Also:
 
- 
numerator
- 
divisor
- 
unsignedType
 
- 
- 
Constructor Details- 
RationalNumberConstructs an instance based on signed integers- Parameters:
- numerator- a 32-bit signed integer
- divisor- a non-zero 32-bit signed integer
 
- 
RationalNumberConstructs an instance supports either signed or unsigned integers.- Parameters:
- numerator- a numerator in the indicated form (signed or unsigned)
- divisor- a non-zero divisor in the indicated form (signed or unsigned)
- unsignedType- indicates whether the input values are to be treated as unsigned.
 
 
- 
- 
Method Details- 
valueOfCalculate rational number using successive approximations.- Parameters:
- value- rational number double value
- Returns:
- the RationalNumber representation of the double value
 
- 
doubleValue- Specified by:
- doubleValuein class- Number
 
- 
floatValue- Specified by:
- floatValuein class- Number
 
- 
intValue
- 
longValue
- 
negateNegates the value of the RationalNumber. If the numerator of this instance has its high-order bit set, then its value is too large to be treated as a Java 32-bit signed integer. In such a case, the only way that a RationalNumber instance can be negated is to divide both terms by a common divisor, if a non-zero common divisor exists. However, if no such divisor exists, there is no numerically correct way to perform the negation. When a negation cannot be performed correctly, this method throws an unchecked exception.- Returns:
- a valid instance with a negated value.
 
- 
toDisplayString
- 
toString
 
-