Объект scala.math.Float
объект Float
Ordering для Float.
Поведение операций сравнения, предоставляемых по умолчанию (явным) порядком для Float изменилось в 2.10.0 и 2.13.0. До Scala 2.10.0 объект Ordering использовал семантику, согласованную с java.lang.Float.compare.
Scala 2.10.0 изменил реализацию lt, equiv, min, и т. д., чтобы соответствовать стандарту IEEE 754, сохраняя при этом метод compare НЕ совместимым, создавая внутренне несогласованный объект. Стандарт IEEE 754 определяет, что 0.0F == -0.0F. Кроме того, он требует, чтобы все сравнения с Float.NaN возвращали false, поэтому 0.0F < Float.NaN, 0.0F > Float.NaN, и Float.NaN == Float.NaN все возвращают false, аналогично None в flatMap.
Признавая ограничение семантики IEEE 754 с точки зрения порядка, Scala 2.13.0 создал два объекта: Ordering.Float.IeeeOrdering, который сохраняет семантику IEEE 754 из Scala 2.12.x, и Ordering.Float.TotalOrdering, который возвращает семантику java.lang.Float.compare для всех операций. По умолчанию используется TotalOrdering.
List(0.0F, 1.0F, 0.0F / 0.0F, -1.0F / 0.0F).sorted // List(-Infinity, 0.0, 1.0, NaN)
List(0.0F, 1.0F, 0.0F / 0.0F, -1.0F / 0.0F).min // -Infinity
implicitly[Ordering[Float]].lt(0.0F, 0.0F / 0.0F) // true
{
import Ordering.Float.IeeeOrdering
List(0.0F, 1.0F, 0.0F / 0.0F, -1.0F / 0.0F).sorted // List(-Infinity, 0.0, 1.0, NaN)
List(0.0F, 1.0F, 0.0F / 0.0F, -1.0F / 0.0F).min // NaN
implicitly[Ordering[Float]].lt(0.0F, 0.0F / 0.0F) // false
}
| Супертипы | |
|---|---|
| Тип «self» |
Классы
Источник
объект IeeeOrdering extends IeeeOrdering
| Компаньон | класс |
|---|
Источник
Порядок для Floats, который согласуется со спецификациями IEEE по возможности.
lt,lteq,equiv,gteqиgtсогласуются с примитивными операциями сравнения дляFloats и возвращаютfalseпри вызове сNaN.minиmaxсогласуются сmath.minиmath.max, и возвращаютNaNпри вызове сNaNв качестве аргумента.compareведет себя так же, как java.lang.Float.compare.
Поскольку поведение Floats, заданное спецификацией IEEE, не согласуется с полным порядком при работе с NaN, для Float определены два порядка: TotalOrdering, который согласуется с полным порядком, и IeeeOrdering, который согласуется по возможности со спецификацией IEEE и операциями с плавающей точкой, определенными в scala.math.
Этот порядок может быть предпочтительным в числовых контекстах.
| См. также | |
|---|---|
| Компаньон | объект |
Источник
объект TotalOrdering extends TotalOrdering
| Компаньон | класс |
|---|
Источник
Порядок для Floats, который является полностью согласованным полным порядком, и рассматривает NaN как большее, чем все остальные значения Float ; он ведет себя так же, как java.lang.Float.compare.
Поскольку поведение Floats, определённое спецификацией IEEE, не согласуется с полным порядком при работе с NaN, для Float определены два порядка: TotalOrdering, который согласуется с полным порядком, и IeeeOrdering, который согласуется по возможности со спецификацией IEEE и операциями с плавающей точкой, определёнными в scala.math.
Этот порядок может быть предпочтительным для сортировки коллекций.
| См. также | |
|---|---|
| Компаньон | объект |
© 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$.html