Spec-Zone.ru › Scala 3.1

Трейт scala.math.IeeeOrdering

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

трейт IeeeOrdering extends Ordering[Float]

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

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

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

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

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

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

См. также

TotalOrdering

Надтипы
трейт Ordering[Float]
трейт PartialOrdering[Float]
трейт Equiv[Float]
трейт Serializable
трейт Comparator[Float]
класс Object
трейт Matchable
класс Any
Известные подтипы
объект FloatIsFractional.type
объект IeeeOrdering.type

Унаследованные классы

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

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

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

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

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

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

Исходный код
переопределённый def equiv(x: Float, y: Float): Boolean

Классы определения Ordering -> PartialOrdering -> Equiv

Исходный код
переопределённый def gt(x: Float, y: Float): Boolean

Классы определения Ordering -> PartialOrdering

Исходный код
переопределённый def gteq(x: Float, y: Float): Boolean

Классы определения Ordering -> PartialOrdering

Исходный код
переопределённый def lt(x: Float, y: Float): Boolean

Классы определения Ordering -> PartialOrdering

Исходный код
переопределённый def lteq(x: Float, y: Float): Boolean

Классы определения Ordering -> PartialOrdering

Исходный код
переопределённый def max[U <: Float](x: U, y: U): U

Definition Classes Ordering

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

Definition Classes Ordering

Наследованные методы

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

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

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

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

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

Source
def on[U](f: U => Float): 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[Float]): Ordering[Float]

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

Параметры значения
other

Ordering для использования, если этот Ordering возвращает ноль

Пример
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: Float => S)(implicit ord: Ordering[S]): Ordering[Float]

Принимая функцию 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[Float]

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

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

Definition Classes Ordering -> PartialOrdering
Унаследовано от Ordering

def reversed(): Comparator[Float]

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Source
implicit def mkOrderingOps(lhs: Float): 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$$Float$$IeeeOrdering.html

Spec-Zone.ru

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