programing

Swift에서 Double 및 Float의 최대값을 찾는 방법

javamemo 2023. 8. 28. 20:43
반응형

Swift에서 Double 및 Float의 최대값을 찾는 방법

현재 학습 Swift, 다양한 종류의 정수에 대한 최대값과 최소값찾는 방법이 있습니다.Int.max그리고.Int.min.

Double과 Float의 최대값을 찾을 수 있는 방법이 있습니까?그리고 이런 질문은 어떤 서류를 참고해야 하나요?저는 현재 애플의 스위프트 프로그래밍 언어를 읽고 있습니다.

Swift 3+ 기준으로 다음을 사용해야 합니다.

CGFloat.greatestFiniteMagnitude
Double.greatestFiniteMagnitude
Float.greatestFiniteMagnitude

없는 동안에Double.maxC에 정의되어 있습니다.float.h스위프트에서 액세스할 수 있는 헤더.import Darwin.

import Darwin

let fmax = FLT_MAX
let dmax = DBL_MAX

이것들은 대충3.4 * 10^38그리고.1.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

따라서 이러한 한계를 극복할 수 있는 계산을 시작하기 전에 부동소수점에 대해 자세히 읽어보아야 합니다.여기와 여기가 아마도 좋은 시작일 입니다.

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에서 사용됩니다.

그냥 쓰기

let mxFloat = MAXFLOAT

스위프트에서 플로트의 최대값을 얻을 수 있습니다.

또한.CGFloat.infinity,Double.infinity아니면 그냥.infinity이러한 상황에서 유용할 수 있습니다.

swift 5와 함께 작동합니다.

public extension Double {

    /// Max double value.
    static var max: Double {
        return Double(greatestFiniteMagnitude)
    }

    /// Min double value.
    static var min: Double {
        return Double(-greatestFiniteMagnitude)
    }
}

언급URL : https://stackoverflow.com/questions/28525484/how-to-find-max-value-for-double-and-float-in-swift

반응형