2015-02-15 7 views
40
में फ्लोट करने के लिए

वर्तमान स्विफ्ट सीखने, वहाँ तरीके अधिकतम और पूर्णांकInt.max और Int.min तरह के विभिन्न प्रकार के लिए मिनट मूल्य को खोजने के लिए कर रहे हैं।कैसे डबल के लिए अधिकतम मूल्य खोजने के लिए और स्विफ्ट

वहाँ डबल के लिए अधिकतम मूल्य खोजने के लिए और फ्लोट करने के लिए एक तरीका है? इसके अलावा, मुझे इस तरह के प्रश्न के लिए किस दस्तावेज़ का संदर्भ देना चाहिए? मैं वर्तमान में ऐप्पल की स्विफ्ट प्रोग्रामिंग भाषा पढ़ रहा हूं।

उत्तर

52

जबकि Double.max नहीं है, यह सी 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 

तो इससे पहले कि आप कुछ गणना कि संभवतः इन सीमाओं के खिलाफ ब्रश सकता है में हो, तो आप शायद पढ़ना चाहिए फ्लोटिंग प्वाइंट पर ऊपर। Here और here शायद एक अच्छी शुरुआत है।

+0

मैं Xcode खेल के मैदान में आप कोड कोशिश करते हैं और मिल 'हूँ (+ अनंत)' डबल के लिए और फ्लोट के लिए 340,282,346,638,529,000,000,000,000,000,000,000,000.0। डबल और इंट 64 दोनों में 64 बिट क्यों है लेकिन डबल अधिक संख्या स्टोर कर सकता है? –

+3

आपको फ़्लोटिंग पॉइंट प्रस्तुति के बारे में जानने की आवश्यकता है। (Http://en.wikipedia.org/wiki/Floating_point) [विकिपीडिया लेख] के साथ शुरू करो और यह भी [इस परिचय] (http://introcs.cs.princeton.edu/java/91float/) –

+0

तुम इतने धन्यवाद बहुत। मैं उन्हें सब पढ़ूंगा। –

8

ए वी के जवाब ठीक है, लेकिन मैं उन मैक्रो मुश्किल याद करने के लिए और थोड़ा अस्पष्ट लगता है, तो अंत में मैं 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 
} 

लोअरकेस न्यूनतम और अधिकतम उपयोग न करें - उन प्रतीकों स्विफ्ट 3 के रूप में स्विफ्ट 3.

71

में उपयोग किया जाता है, तो आप का उपयोग करना चाहिए:

CGFloat.greatestFiniteMagnitude 
Double.greatestFiniteMagnitude 
Float.greatestFiniteMagnitude 
+0

यह उत्तर है यदि आप लिनक्स पर संकलित कोड में रुचि रखते हैं। –

2

बस

लिखें 0
let mxFloat = MAXFLOAT 

आप swif में नाव का अधिकतम मान मिल जाएगा।

+0

यह लिनक्स पर संकलित नहीं होगा –

संबंधित मुद्दे