java.lang.Object
java.lang.Number
org.miaixz.bus.core.math.Fraction
- All Implemented Interfaces:
Serializable,Comparable<Fraction>
Fraction 是一个 Number 实现, 可以准确地存储分数。
此类是不可变的,并且与大多数接受 Number 的方法兼容。
请注意,此类适用于常见用例,它是基于 int 的, 因此容易受到各种溢出问题的影响。对于基于 BigInteger 的等效类, 请参见 Commons Math 库中的 BigFraction 类。
此类来自:Apache Commons Lang3
- Since:
- Java 17+
- Author:
- Kimi Liu
- See Also:
-
Field Summary
Fields -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionabs()获取与此分数等值的正分数。将此分数与另一个分数相加,并返回约简后的结果。int将此分数除以另一个分数。doublebooleanfloatint获取分数的分母部分。int获取分数的分子部分。int获取真分数的分子部分,始终为正数。int获取真分数的整数部分,包括符号。inthashCode()intintValue()invert()获取此分数的倒数 (1/fraction)。longmultiplyBy(Fraction fraction) 将此分数与另一个分数相乘,并返回约简后的结果。negate()获取此分数的负数 (-fraction)。static Fractionof(double value) 从double值创建一个Fraction实例。static Fractionof(int numerator, int denominator) 使用分数的两个部分 Y/Z 创建一个Fraction实例。static Fractionof(int whole, int numerator, int denominator) 使用分数的三个部分 X Y/Z 创建一个Fraction实例。static Fraction从String创建一个 Fraction。static FractionofReduced(int numerator, int denominator) 使用分数的两个部分 Y/Z 创建一个简化后的Fraction实例。pow(int power) 获取此分数的指定幂次。reduce()将分数约简为分子和分母的最小值,并返回结果。从此分数中减去另一个分数的值,并返回约简后的结果。获取此分数的真分数形式的字符串表示,格式为 X Y/Z。toString()Methods inherited from class java.lang.Number
byteValue, shortValue
-
Field Details
-
Constructor Details
-
Fraction
public Fraction(int numerator, int denominator) 使用分数的两个部分构造一个Fraction实例,例如 Y/Z。- Parameters:
numerator- 分子,例如在“七分之三”中的三denominator- 分母,例如在“七分之三”中的七
-
-
Method Details
-
of
- Parameters:
value- 要转换的 double 值- Returns:
- 一个新的分数实例,接近该值
- Throws:
ArithmeticException- 如果|value| > Integer.MAX_VALUE或value = NaNArithmeticException- 如果计算出的分母为zeroArithmeticException- 如果算法不收敛
-
of
使用分数的两个部分 Y/Z 创建一个Fraction实例。 任何负号都会被解析到分子上。- Parameters:
numerator- 分子,例如 '3/7' 中的 3denominator- 分母,例如 '3/7' 中的 7- Returns:
- 一个新的分数实例
- Throws:
ArithmeticException- 如果分母为zero或分母为negative且分子为Integer#MIN_VALUE
-
of
使用分数的三个部分 X Y/Z 创建一个Fraction实例。 负号必须传递到整数部分。- Parameters:
whole- 整数部分,例如 '一又七分之三' 中的 一numerator- 分子,例如 '一又七分之三' 中的 三denominator- 分母,例如 '一又七分之三' 中的 七- Returns:
- 一个新的分数实例
- Throws:
ArithmeticException- 如果分母为zeroArithmeticException- 如果分母为负数ArithmeticException- 如果分子为负数ArithmeticException- 如果结果分子超过Integer.MAX_VALUE
-
of
- Parameters:
str- 要解析的字符串,必须不为null- Returns:
- 新的
Fraction实例 - Throws:
NullPointerException- 如果字符串为nullNumberFormatException- 如果数字格式无效
-
ofReduced
使用分数的两个部分 Y/Z 创建一个简化后的Fraction实例。例如,如果输入参数表示 2/4,则创建的分数将是 1/2。
任何负号都会被解析到分子上。
- Parameters:
numerator- 分子,例如 '3/7' 中的 3denominator- 分母,例如 '3/7' 中的 7- Returns:
- 一个新的分数实例,分子和分母已简化
- Throws:
ArithmeticException- 如果分母为zero
-
abs
获取与此分数等值的正分数。更精确地说:
(fraction >= 0 ? this : -fraction)返回的分数不会被约简。
- Returns:
- 如果此分数为正,则返回
this;否则返回一个新的正分数实例,其分子符号相反
-
add
将此分数与另一个分数相加,并返回约简后的结果。 该算法遵循 Knuth 的 4.5.1 节。- Parameters:
fraction- 要添加的分数,不能为空- Returns:
- 包含结果值的
Fraction实例 - Throws:
NullPointerException- 如果传入的分数为nullArithmeticException- 如果结果的分子或分母超出Integer.MAX_VALUE
-
divideBy
将此分数除以另一个分数。- Parameters:
fraction- 要除以的分数,不能为空- Returns:
- 包含结果值的
Fraction实例 - Throws:
NullPointerException- 如果传入的分数为nullArithmeticException- 如果要除以的分数为零ArithmeticException- 如果结果的分子或分母超出Integer.MAX_VALUE
-
getDenominator
public int getDenominator()获取分数的分母部分。- Returns:
- 分数的分母部分
-
getNumerator
public int getNumerator()获取分数的分子部分。此方法可能返回一个大于分母的值,即一个假分数,例如 7/4 中的七。
- Returns:
- 分数的分子部分
-
getProperNumerator
public int getProperNumerator()获取真分数的分子部分,始终为正数。一个假分数 7/4 可以分解为真分数 1 3/4。 此方法返回真分数中的 3。
如果分数为负数,例如 -7/4,可以分解为 -1 3/4, 因此此方法返回正数的真分数分子,即 3。
- Returns:
- 真分数的分子部分,始终为正数
-
getProperWhole
public int getProperWhole()获取真分数的整数部分,包括符号。一个假分数 7/4 可以分解为真分数 1 3/4。 此方法返回真分数中的 1。
如果分数为负数,例如 -7/4,可以分解为 -1 3/4, 因此此方法返回真分数的整数部分 -1。
- Returns:
- 真分数的整数部分,包括符号
-
invert
获取此分数的倒数 (1/fraction)。返回的分数不会被约简。
- Returns:
- 一个新分数实例,其分子和分母互换
- Throws:
ArithmeticException- 如果分数表示零
-
multiplyBy
将此分数与另一个分数相乘,并返回约简后的结果。- Parameters:
fraction- 要乘以的分数,不能为空- Returns:
- 包含结果值的
Fraction实例 - Throws:
NullPointerException- 如果传入的分数为nullArithmeticException- 如果结果的分子或分母超出Integer.MAX_VALUE
-
negate
获取此分数的负数 (-fraction)。返回的分数不会被约简。
- Returns:
- 一个新分数实例,其分子符号相反
-
pow
获取此分数的指定幂次。返回的分数已约简。
- Parameters:
power- 要将分数提升到的幂次- Returns:
- 如果幂次为一,则返回
this;如果幂次为零(即使分数等于零),则返回ONE; 否则返回一个新的分数实例,提升到相应的幂次 - Throws:
ArithmeticException- 如果结果的分子或分母超出Integer.MAX_VALUE
-
reduce
将分数约简为分子和分母的最小值,并返回结果。例如,如果此分数表示 2/4,则结果将是 1/2。
- Returns:
- 一个新的约简后的分数实例,如果无法进一步简化,则返回此实例
-
subtract
从此分数中减去另一个分数的值,并返回约简后的结果。- Parameters:
fraction- 要减去的分数,不能为空- Returns:
- 包含结果值的
Fraction实例 - Throws:
NullPointerException- 如果传入的分数为nullArithmeticException- 如果结果的分子或分母无法表示为int
-
toProperString
获取此分数的真分数形式的字符串表示,格式为 X Y/Z。使用的格式为 '整数部分 分子/分母'。 如果整数部分为零,则省略整数部分。如果分子为零,则仅返回整数部分。
- Returns:
- 分数的字符串表示形式
-
doubleValue
public double doubleValue()- Specified by:
doubleValuein classNumber
-
floatValue
public float floatValue()- Specified by:
floatValuein classNumber
-
intValue
public int intValue() -
longValue
public long longValue() -
compareTo
- Specified by:
compareToin interfaceComparable<Fraction>
-
equals
-
hashCode
public int hashCode() -
toString
-