用法:
object Float
Ordering
s 为 Float
s.
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
,类似于 flatMap
中的 None
。
认识到 IEEE 754 语义在排序方面的局限性,Scala 2.13.0 创建了两个实例:Ordering.Float.IeeeOrdering
,它保留了 Scala 2.12.x 的 IEEE 754 语义,和 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
}
源码:
- Ordering.scala
相关用法
- Scala Ordering.orElseBy用法及代码示例
- Scala Ordering.Double用法及代码示例
- Scala Ordering.orElse用法及代码示例
- Scala Ordering.on用法及代码示例
- Scala Ordering.by用法及代码示例
- Scala Option.mkString用法及代码示例
- Scala Option.filterNot用法及代码示例
- Scala Option.filter用法及代码示例
- Scala Option.groupBy用法及代码示例
- Scala Option.foreach用法及代码示例
- Scala Option.unzip用法及代码示例
- Scala Option.sliding用法及代码示例
- Scala OpenHashMap.scanRight用法及代码示例
- Scala Option.sizeIs用法及代码示例
- Scala OpenHashMap.sizeCompare用法及代码示例
- Scala OpenHashMap.mkString用法及代码示例
- Scala Option.zip用法及代码示例
- Scala Option.groupMapReduce用法及代码示例
- Scala OpenHashMap.runWith用法及代码示例
- Scala Option.lazyZip用法及代码示例
- Scala OpenHashMap.inits用法及代码示例
- Scala Option.transpose用法及代码示例
- Scala OptionOrdering.orElseBy用法及代码示例
- Scala Option.scanRight用法及代码示例
- Scala Option.orNull用法及代码示例
注:本文由纯净天空筛选整理自scala-lang.org大神的英文原创作品 Ordering.Float。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。