类 Precision
java.lang.Object
org.hipparchus.util.Precision
用于比较数字的实用工具。
-
字段概要
-
方法概要
修饰符和类型方法说明static int
compareTo
(double x, double y, double eps) 在允许一定误差的情况下比较两个数字。static int
compareTo
(double x, double y, int maxUlps) 在允许一定误差的情况下比较两个数字。static boolean
equals
(double x, double y) 根据equals(x, y, 1)
的定义,如果它们相等,则返回true。static boolean
equals
(double x, double y, double eps) 如果参数之间没有严格的双精度值,或它们之间的差值在允许误差范围内(包括在内),则返回true
。static boolean
equals
(double x, double y, int maxUlps) 如果参数相等或在允许误差范围内(包括在内),则返回true。static boolean
equals
(float x, float y) 根据equals(x, y, 1)
的定义,如果它们相等,则返回true。static boolean
equals
(float x, float y, float eps) 如果参数相等或在允许误差范围内(包括在内),则返回true。static boolean
equals
(float x, float y, int maxUlps) 如果参数相等或在允许误差范围内(包括在内),则返回true。static boolean
equalsIncludingNaN
(double x, double y) 如果参数都是NaN,或根据equals(x, y, 1)
的定义它们相等,则返回true。static boolean
equalsIncludingNaN
(double x, double y, double eps) 如果参数都是NaN,相等或在允许误差范围内(包括在内),则返回true。static boolean
equalsIncludingNaN
(double x, double y, int maxUlps) 如果两个参数都是NaN,或根据equals(x, y, maxUlps)
的定义它们相等,则返回true。static boolean
equalsIncludingNaN
(float x, float y) 如果两个参数都是NaN,或根据equals(x, y, 1)
的定义它们相等,则返回true。static boolean
equalsIncludingNaN
(float x, float y, float eps) 如果参数都是NaN,相等,或在允许误差范围内(包括在内),则返回true。static boolean
equalsIncludingNaN
(float x, float y, int maxUlps) 如果两个参数都是NaN,或根据equals(x, y, maxUlps)
的定义它们相等,则返回true。static boolean
equalsWithRelativeTolerance
(double x, double y, double eps) 如果参数之间没有严格的双精度值,或它们之间的相对差值小于或等于给定的公差,则返回true
。static boolean
isMathematicalInteger
(double x) 检查x是否是一个数学整数。static boolean
isMathematicalInteger
(float x) 检查x是否是一个数学整数。static double
representableDelta
(double x, double originalDelta) 计算一个接近originalDelta
的数delta
,使得具有以下属性static double
round
(double x, int scale) 将给定值四舍五入到指定的小数位数。static double
round
(double x, int scale, RoundingMode roundingMethod) 将给定值四舍五入到指定的小数位数。static float
round
(float x, int scale) 将给定值四舍五入到指定的小数位数。static float
round
(float x, int scale, RoundingMode roundingMethod) 将给定值四舍五入到指定的小数位数。
-
字段详细资料
-
EPSILON
public static final double EPSILON最大的双精度浮点数,使得1 + EPSILON
在数值上等于1。这个值是由于将实数舍入为双精度浮点数而产生的相对误差的上限。在IEEE 754算术中,这个值是2-53。
- 另请参阅:
-
SAFE_MIN
public static final double SAFE_MIN安全最小值,使得1 / SAFE_MIN
不会溢出。
在IEEE 754算术中,这也是最小的规格化数2-1022。
-
-
方法详细资料
-
compareTo
public static int compareTo(double x, double y, double eps) 在允许一定误差的情况下比较两个数字。- 参数:
-
x
- 第一个数字 -
y
- 第二个数字 -
eps
- 在检查相等性时允许的误差量 - 返回:
-
- 如果
equals(x, y, eps)
,则返回0 - 如果!
equals(x, y, eps)
&& x < y,则返回< 0 - 如果!
equals(x, y, eps)
&& x > y或任一参数为NaN,则返回> 0
- 如果
-
compareTo
public static int compareTo(double x, double y, int maxUlps) 在允许一定误差的情况下比较两个数字。如果两个浮点数之间有(maxUlps - 1)
(或更少)个浮点数,则认为它们相等,即两个相邻的浮点数被视为相等。改编自 Bruce Dawson。如果任一参数为NaN,则返回false
。- 参数:
-
x
- 第一个值 -
y
- 第二个值 -
maxUlps
-(maxUlps - 1)
是x
和y
之间的浮点值的数量。 - 返回:
-
- 如果
equals(x, y, maxUlps)
,则返回0 - 如果!
equals(x, y, maxUlps)
&& x < y,则返回< 0 - 如果!
equals(x, y, maxUlps)
&& x > y或任一参数为NaN,则返回> 0
- 如果
-
equals
public static boolean equals(float x, float y) 根据equals(x, y, 1)
的定义,如果它们相等,则返回true。- 参数:
-
x
- 第一个值 -
y
- 第二个值 - 返回:
-
如果值相等,则返回
true
。
-
equalsIncludingNaN
public static boolean equalsIncludingNaN(float x, float y) 如果两个参数都是NaN,或根据equals(x, y, 1)
的定义它们相等,则返回true。- 参数:
-
x
- 第一个值 -
y
- 第二个值 - 返回:
-
如果值相等或都是NaN,则返回
true
。
-
equals
public static boolean equals(float x, float y, float eps) 如果参数相等或在允许误差范围内(包括在内),则返回true。如果任一参数为NaN,则返回false
。- 参数:
-
x
- 第一个值 -
y
- 第二个值 -
eps
- 允许的绝对误差量。 - 返回:
-
如果值相等或彼此之间的范围内,则返回
true
。
-
equalsIncludingNaN
public static boolean equalsIncludingNaN(float x, float y, float eps) 如果两个参数都是NaN,相等,或在允许误差范围内(包括在内),则返回true。- 参数:
-
x
- 第一个值 -
y
- 第二个值 -
eps
- 允许的绝对误差量。 - 返回:
-
如果值相等或彼此之间的范围内,或两者都是NaN,则返回
true
。
-
equals
public static boolean equals(float x, float y, int maxUlps) 如果参数相等或在允许误差范围内(包括在内)。如果两个浮点数之间有(maxUlps - 1)
(或更少)个浮点数,则认为它们相等,即两个相邻的浮点数被视为相等。改编自 Bruce Dawson。如果任一参数为NaN,则返回false
。- 参数:
-
x
- 第一个值 -
y
- 第二个值 -
maxUlps
-(maxUlps - 1)
是x
和y
之间的浮点值的数量。 - 返回:
-
如果
x
和y
之间的浮点值少于maxUlps
,则返回true
。
-
equalsIncludingNaN
public static boolean equalsIncludingNaN(float x, float y, int maxUlps) 如果两个参数都是NaN,或根据equals(x, y, maxUlps)
的定义它们相等,则返回true。- 参数:
-
x
- 第一个值 -
y
- 第二个值 -
maxUlps
-(maxUlps - 1)
是x
和y
之间的浮点值的数量。 - 返回:
-
如果两个参数都是NaN,或
x
和y
之间的浮点值少于maxUlps
,则返回true
。
-
equals
public static boolean equals(double x, double y) 根据equals(x, y, 1)
的定义,如果它们相等,则返回true。- 参数:
-
x
- 第一个值 -
y
- 第二个值 - 返回:
-
如果值相等,则返回
true
。
-
equalsIncludingNaN
public static boolean equalsIncludingNaN(double x, double y) 如果两个参数都是NaN,或根据equals(x, y, 1)
的定义它们相等,则返回true。- 参数:
-
x
- 第一个值 -
y
- 第二个值 - 返回:
-
如果这两个值相等或都是NaN,则返回
true
。
-
equals
public static boolean equals(double x, double y, double eps) 如果参数之间没有严格的双精度值,或它们之间的差在允许误差范围内(包括在内),则返回true
。如果其中任何一个参数是NaN,则返回false
。- 参数:
-
x
- 第一个值。 -
y
- 第二个值。 -
eps
- 允许的绝对误差量。 - 返回:
-
如果这两个值是相邻的浮点数,或它们在彼此范围内,则返回
true
。
-
equalsWithRelativeTolerance
public static boolean equalsWithRelativeTolerance(double x, double y, double eps) 如果参数之间没有严格的双精度值,或它们之间的相对差小于或等于给定的容差,则返回true
。如果其中任何一个参数是NaN,则返回false
。- 参数:
-
x
- 第一个值。 -
y
- 第二个值。 -
eps
- 允许的相对误差量。 - 返回:
-
如果这两个值是相邻的浮点数,或它们在彼此范围内,则返回
true
。
-
equalsIncludingNaN
public static boolean equalsIncludingNaN(double x, double y, double eps) 如果参数都是NaN,相等或在允许误差范围内(包括在内),则返回true。- 参数:
-
x
- 第一个值 -
y
- 第二个值 -
eps
- 允许的绝对误差量。 - 返回:
-
如果这两个值相等或在彼此范围内,或者都是NaN,则返回
true
。
-
equals
public static boolean equals(double x, double y, int maxUlps) 如果参数相等或在允许误差范围内(包括在内),则返回true。如果两个浮点数之间有
(maxUlps - 1)
(或更少)个浮点数,则认为它们相等,即认为两个相邻的浮点数是相等的。改编自Bruce Dawson。如果其中任何一个参数是NaN,则返回
false
。- 参数:
-
x
- 第一个值 -
y
- 第二个值 -
maxUlps
-(maxUlps - 1)
是x
和y
之间的浮点值数量。 - 返回:
-
如果
x
和y
之间的浮点值数量少于maxUlps
,则返回true
。
-
equalsIncludingNaN
public static boolean equalsIncludingNaN(double x, double y, int maxUlps) 如果两个参数都是NaN,或者根据equals(x, y, maxUlps)
的定义它们相等,则返回true。- 参数:
-
x
- 第一个值 -
y
- 第二个值 -
maxUlps
-(maxUlps - 1)
是x
和y
之间的浮点值数量。 - 返回:
-
如果两个参数都是NaN,或者
x
和y
之间的浮点值数量少于maxUlps
,则返回true
。
-
round
public static double round(double x, int scale) 将给定值四舍五入到指定的小数位数。该值使用BigDecimal.ROUND_HALF_UP
方法进行四舍五入。- 参数:
-
x
- 要四舍五入的值。 -
scale
- 小数点右侧的位数。 - 返回:
- 四舍五入后的值。
-
round
- 参数:
-
x
- 要四舍五入的值。 -
scale
- 小数点右侧的位数。 -
roundingMethod
- 在BigDecimal
中定义的四舍五入方法。 - 返回:
- 四舍五入后的值。
- 抛出:
-
ArithmeticException
- 如果roundingMethod == ROUND_UNNECESSARY
并且指定的缩放操作需要四舍五入。 -
IllegalArgumentException
- 如果roundingMethod
不表示有效的四舍五入模式。
-
round
public static float round(float x, int scale) 将给定值四舍五入到指定的小数位数。该值使用BigDecimal.ROUND_HALF_UP
方法进行四舍五入。- 参数:
-
x
- 要四舍五入的值。 -
scale
- 小数点右侧的位数。 - 返回:
- 四舍五入后的值。
-
round
public static float round(float x, int scale, RoundingMode roundingMethod) throws MathRuntimeException, MathIllegalArgumentException 将给定值四舍五入到指定的小数位数。该值使用BigDecimal
中定义的任何方法进行四舍五入。- 参数:
-
x
- 要四舍五入的值。 -
scale
- 小数点右侧的位数。 -
roundingMethod
- 在BigDecimal
中定义的四舍五入方法。 - 返回:
- 四舍五入后的值。
- 抛出:
-
MathRuntimeException
- 如果需要精确操作但结果不精确 -
MathIllegalArgumentException
- 如果roundingMethod
不是有效的四舍五入方法。
-
isMathematicalInteger
public static boolean isMathematicalInteger(double x) 检查x是否是数学整数。- 参数:
-
x
- 要检查的数字 - 返回:
- 如果x是数学整数,则返回true
- 从以下版本开始:
- 1.7
-
isMathematicalInteger
public static boolean isMathematicalInteger(float x) 检查x是否是数学整数。- 参数:
-
x
- 要检查的数字 - 返回:
- 如果x是数学整数,则返回true
- 从以下版本开始:
- 1.7
-
representableDelta
public static double representableDelta(double x, double originalDelta) 计算一个接近originalDelta
的数delta
,使得
是精确可表示的。这在计算数值导数时很有用,以减少舍入误差。x + delta - x
- 参数:
-
x
- 值。 -
originalDelta
- 偏移值。 - 返回:
-
一个数
delta
,使得x + delta
和x
之间的差异是一个可表示的浮点数。
-