用法:
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。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。
