🕊
[Swift] Double の min(), max() で Double.nan を扱うときは順番に注意せよ
結論
以下のように、min()
や max()
で評価するときに先頭に Double.nan
があると、必ず Double.nan
が抽出されてしまいます。
let hoge: Double = min(Double.nan, 0.0, -1.0)
print("hoge: \(hoge)") // hoge: nan
let moge: Double = min(0.0, Double.nan, -1.0)
print("moge: \(moge)") // moge: -1.0
let huga: Double = max(Double.nan, 0.0, 1.0)
print("huga: \(huga)") // huga: nan
let piyo: Double = max(0.0, Double.nan, 1.0)
print("piyo: \(piyo)") // piyo: 1.0
なので、先頭に Double.nan
をとりうる計算結果などは、入れないように注意しましょう。
Discussion