程序包 org.hipparchus.util

类 Precision

java.lang.Object
org.hipparchus.util.Precision

public class Precision extends Object
用于比较数字的实用工具。
  • 字段概要

    字段
    修饰符和类型
    字段
    说明
    static final double
    最大的双精度浮点数,使得1 + EPSILON在数值上等于1。
    static final double
    安全最小值,使得1 / SAFE_MIN不会溢出。
  • 方法概要

    修饰符和类型
    方法
    说明
    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
    检查x是否是一个数学整数。
    static boolean
    检查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)
    将给定值四舍五入到指定的小数位数。

    从类继承的方法 java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
  • 字段详细资料

    • 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 - 在检查相等性时允许的误差量
      返回:
    • compareTo

      public static int compareTo(double x, double y, int maxUlps)
      在允许一定误差的情况下比较两个数字。如果两个浮点数之间有(maxUlps - 1)(或更少)个浮点数,则认为它们相等,即两个相邻的浮点数被视为相等。改编自 Bruce Dawson。如果任一参数为NaN,则返回false
      参数:
      x - 第一个值
      y - 第二个值
      maxUlps - (maxUlps - 1)xy之间的浮点值的数量。
      返回:
    • 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)xy之间的浮点值的数量。
      返回:
      如果xy之间的浮点值少于maxUlps,则返回true
    • equalsIncludingNaN

      public static boolean equalsIncludingNaN(float x, float y, int maxUlps)
      如果两个参数都是NaN,或根据equals(x, y, maxUlps)的定义它们相等,则返回true。
      参数:
      x - 第一个值
      y - 第二个值
      maxUlps - (maxUlps - 1)xy之间的浮点值的数量。
      返回:
      如果两个参数都是NaN,或xy之间的浮点值少于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)xy之间的浮点值数量。
      返回:
      如果xy之间的浮点值数量少于maxUlps,则返回true
    • equalsIncludingNaN

      public static boolean equalsIncludingNaN(double x, double y, int maxUlps)
      如果两个参数都是NaN,或者根据equals(x, y, maxUlps)的定义它们相等,则返回true。
      参数:
      x - 第一个值
      y - 第二个值
      maxUlps - (maxUlps - 1)xy之间的浮点值数量。
      返回:
      如果两个参数都是NaN,或者xy之间的浮点值数量少于maxUlps,则返回true
    • round

      public static double round(double x, int scale)
      将给定值四舍五入到指定的小数位数。该值使用BigDecimal.ROUND_HALF_UP方法进行四舍五入。
      参数:
      x - 要四舍五入的值。
      scale - 小数点右侧的位数。
      返回:
      四舍五入后的值。
    • round

      public static double round(double x, int scale, RoundingMode roundingMethod)
      将给定值四舍五入到指定的小数位数。该值使用BigDecimal中定义的任何方法进行四舍五入。如果x是无穷大或NaN,则无论其他参数如何,都将返回x的值。
      参数:
      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 + deltax之间的差异是一个可表示的浮点数。