Spec-Zone.ru › Scala 3.1

Trait scala.math.IeeeOrdering

Объект-компаньон • Исходный код

trait IeeeOrdering extends Ordering[Double]

Порядок для Doubles, который согласуется со спецификациями IEEE, где это возможно.

  • lt, lteq, equiv, gteq и gt согласуются с операциями сравнения примитивов для Doubles и возвращают false при вызове с NaN.

  • min и max согласуются с math.min и math.max, и возвращают NaN при вызове с NaN в качестве любого из аргументов.

  • compare ведет себя так же, как java.lang.Double.compare.

Поскольку поведение Doubles, определенное спецификацией IEEE, не согласуется с полным порядком при работе с NaN, для Double определены два порядка: TotalOrdering, который согласуется с полным порядком, и IeeeOrdering, который согласуется насколько это возможно со спецификацией IEEE и операциями с плавающей точкой, определенными в scala.math.

Этот порядок может быть предпочтительным в числовых контекстах.

См. также

TotalOrdering

Надтипы
trait Ordering[Double]
trait PartialOrdering[Double]
trait Equiv[Double]
trait Serializable
trait Comparator[Double]
class Object
trait Matchable
class Any
Известные подтипы
object DoubleIsFractional.type
object IeeeOrdering.type

Наследуемые классы

Исходный код
class OrderingOps(lhs: T)

Этот внутренний класс определяет операторы сравнения, доступные для T.

Он не может расширять AnyVal, потому что это не класс верхнего уровня или член статически доступного объекта.

Наследуется от Ordering

Конкретные методы

Исходный код
def compare(x: Double, y: Double): Int

Исходный код
override def equiv(x: Double, y: Double): Boolean

Классы-предки Ordering -> PartialOrdering -> Equiv

Исходный код
override def gt(x: Double, y: Double): Boolean

Классы-предки Ordering -> PartialOrdering

Исходный код
override def gteq(x: Double, y: Double): Boolean

Классы-предки Ordering -> PartialOrdering

Исходный код
override def lt(x: Double, y: Double): Boolean

Классы-предки Ordering -> PartialOrdering

Исходный код
override def lteq(x: Double, y: Double): Boolean

Классы-предки Ordering -> PartialOrdering

Исходный код
override def max[U <: Double](x: U, y: U): U

Definition Classes Ordering

Source
override def min[U <: Double](x: U, y: U): U

Definition Classes Ordering

Наследуемые методы

Source
def isReverseOf(other: Ordering[_]): Boolean

Возвращает, является ли порядок other обратным к этому порядку.

Эквивалентно other == this.reverse.

Реализации должны переопределять этот метод только в том случае, если они переопределяют reverse также.

Наследуется от Ordering

Source
def on[U](f: U => Double): Ordering[U]

Принимая функцию f, преобразующую U в T, создает Ordering[U], функция сравнения которого эквивалентна:

def compare(x:U, y:U) = Ordering[T].compare(f(x), f(y))
Наследуется от Ordering

Source
def orElse(other: Ordering[Double]): Ordering[Double]

Создаёт Ordering[T], функция сравнения которого возвращает результат функции сравнения этого Ordering, если она не равна нулю, в противном случае — результат функции сравнения other.

Параметры
other

порядок, который используется, если этот порядок возвращает ноль

Пример
case class Pair(a: Int, b: Int)
val pairOrdering = Ordering.by[Pair, Int](_.a)
                          .orElse(Ordering.by[Pair, Int](_.b))
Наследуется от Ordering

Source
def orElseBy[S](f: Double => S)(implicit ord: Ordering[S]): Ordering[Double]

Принимая функцию f, преобразующую T в S, создаёт Ordering[T], функция сравнения которого возвращает результат функции сравнения этого Ordering, если она не равна нулю, в противном случае результат, эквивалентный:

Ordering[S].compare(f(x), f(y))

Эта функция эквивалентна передаче результата Ordering.by(f) в orElse.

Пример
case class Pair(a: Int, b: Int)
val pairOrdering = Ordering.by[Pair, Int](_.a)
                          .orElseBy[Int](_.b)
Наследуется от Ordering

Source
override def reverse: Ordering[Double]

Возвращает обратный порядок к этому порядку.

Реализации, переопределяющие этот метод, ДОЛЖНЫ переопределять isReverseOf также, если они изменяют поведение (например, кэширование не требует переопределения).

Definition Classes Ordering -> PartialOrdering
Наследуется от Ordering

def reversed(): Comparator[Double]

Унаследовано от Comparator

def thenComparing[U <: Comparable[_ >: U <: <FromJavaObject>]](x$0: Function[_ >: Double <: <FromJavaObject>, _ <: U]): Comparator[Double]

Унаследовано от Comparator

def thenComparing[U <: <FromJavaObject>](x$0: Function[_ >: Double <: <FromJavaObject>, _ <: U], x$1: Comparator[_ >: U <: <FromJavaObject>]): Comparator[Double]

Унаследовано от Comparator

def thenComparing(x$0: Comparator[_ >: Double <: <FromJavaObject>]): Comparator[Double]

Унаследовано от Comparator

def thenComparingDouble(x$0: ToDoubleFunction[_ >: Double <: <FromJavaObject>]): Comparator[Double]

Унаследовано от Comparator

def thenComparingInt(x$0: ToIntFunction[_ >: Double <: <FromJavaObject>]): Comparator[Double]

Унаследовано от Comparator

def thenComparingLong(x$0: ToLongFunction[_ >: Double <: <FromJavaObject>]): Comparator[Double]

Унаследовано от Comparator

Source
def tryCompare(x: Double, y: Double): Option[Int]

Возвращает, определена ли операция сравнения между x и y, и если определена, то результат compare(x, y).

Унаследовано от Ordering

Унаследованные неявные методы

Source
implicit def mkOrderingOps(lhs: Double): OrderingOps

Этот неявный метод дополняет T операторами сравнения, определёнными в scala.math.Ordering.Ops.

Унаследовано от Ordering

© 2002-2022 EPFL, with contributions from Lightbend.
Licensed under the Apache License, Version 2.0.
https://scala-lang.org/api/3.1.1/scala/math/Ordering$$Double$$IeeeOrdering.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API