2017-03-14 3 views
5

मुझे पता है कि फ्लोट या डबल दशमलव संख्या जैसे धन और मात्रा को संग्रहीत करने के लिए अच्छा नहीं है। मैं इसके बजाय NSDecimalNumber का उपयोग करने की कोशिश कर रहा हूं। स्विफ्ट खेल के मैदान में मेरा कोड यहां है।NSDecimalNumber में 1.66 कैसे स्टोर करें

let number:NSDecimalNumber = 1.66 
let text:String = String(describing: number) 
NSLog(text) 

सांत्वना उत्पादन 1,6599999999999995904

है मैं एक चर में दशमलव संख्या 1.66 का सही मूल्य कैसे स्टोर कर सकते हैं?

+0

इस चेक बाहर। http://stackoverflow.com/a/31070910/2975371 – Danieboy

+0

धन्यवाद @ डेनीबॉय। मैं तेजी से नया हूँ। क्या आप मुझे नमूना कोड प्रदान कर सकते हैं कि एक चर में 1.66 को कैसे स्टोर किया जाए? – Joey

उत्तर

8

let number:NSDecimalNumber = 1.66 

दाएँ हाथ की ओर एक चल बिन्दु संख्या जो मूल्य "1.66" वास्तव में प्रतिनिधित्व नहीं कर सकते हैं।

let number = NSDecimalNumber(value: 166).dividing(by: 100) 
print(number) // 1.66 

स्विफ्ट 3 के साथ आप "ओवरले मान प्रकार" Decimal बजाय का उपयोग करने पर विचार हो सकता है:

let number = NSDecimalNumber(string: "1.66") 
print(number) // 1.66 

एक अन्य विकल्प गणित का उपयोग करने के लिए है: एक विकल्प एक स्ट्रिंग से दशमलव संख्या बनाने के लिए है उदाहरण के लिए

let num = Decimal(166)/Decimal(100) 
print(num) // 1.66 

फिर भी एक और विकल्प:

let num = Decimal(sign: .plus, exponent: -2, significand: 166) 
print(num) // 1.66 
संबंधित मुद्दे