web-dev-qa-db-ja.com

SwiftでDoubleおよびFloatの最大値を見つける方法

現在の学習スウィフト、maxおよびmin値を見つける方法があります異なる種類の整数Int.maxInt.minなど。

DoubleとFloatの最大値を見つける方法はありますか?さらに、この種の質問についてはどのドキュメントを参照する必要がありますか?現在、AppleのSwiftプログラミング言語を読んでいます。

59

Double.maxはありませんが、C float.hヘッダーで定義されており、import Darwinを介してSwiftでアクセスできます。

import Darwin

let fmax = FLT_MAX
let dmax = DBL_MAX

これらはおおよそ3.4 * 10^381.79 * 10^308です。

ただし、浮動小数点数ではそれほど単純ではないことに注意してください(浮動小数点数では決して単純ではありません)。これほど大きな数を保持する場合、非常に小さな数で精度を失うのと同様の方法で精度を失います。

let d = DBL_MAX
let e = d - 1.0
let diff = d - e
diff == 0.0  // true

let maxPlusOne = DBL_MAX + 1
maxPlusOne == d  // true

let inf = DBL_MAX * 2
// perhaps infinity is the “maximum” 
inf == Double.infinity  // true

そのため、これらの制限を克服する可能性のある計算を行う前に、おそらく浮動小数点を調べる必要があります。 Herehere は、おそらく良い出発点です。

66

Swift 3現在、次を使用する必要があります。

CGFloat.greatestFiniteMagnitude
Double.greatestFiniteMagnitude
Float.greatestFiniteMagnitude
122
Vadoff

AVの答えは結構ですが、これらのマクロを覚えるのは難しく、少し自明ではないので、最終的にDouble.MINと友人を動作させました:

extension Double {
    static var MIN     = -DBL_MAX
    static var MAX_NEG = -DBL_MIN
    static var MIN_POS =  DBL_MIN
    static var MAX     =  DBL_MAX
}

小文字のminとmaxは使用しないでください。これらの記号はSwift 3で使用されます。

10
AmigoNico

書くだけ

    let mxFloat = MAXFLOAT

あなたは迅速にフロートの最大値を取得します。

6
praveen kumar

それらはすべてSwiftを使用して5。

enter image description here

0
Shady Ghalab