मैं एक स्ट्रिंग से Double
का उपयोग कर बना रहा हूं:
let doubleValue = Double(value)
value
23450000000000000000
है
और डीबगर में मैं doubleValue
को 2.345e+20
के रूप में दिखाता हूं
और मेरे कोड में डबलवैल्यू एन्कोड करने के लिए एन्कोडर (एनकोडर: एन्कोडर) है।
try container.encode(doubleValue, forKey: .akey)
जब मैं इसे चलाता हूं, तो मैं देखता हूं कि doubleValue
को 2.345e+20
के रूप में एन्कोड किया जा रहा है। क्या doubleValue
को लंबे प्रारूप में एन्कोड करने का कोई तरीका है? यानी 23450000000000000000
?
1 उत्तर
सबसे पहले, आप जिस संख्या का प्रिंट आउट long
की तरह करना चाहते हैं, वह UInt64
(जहां अधिकतम print(UInt64.max) // 2^64 = 18446744073709551615
है) के लिए भी बहुत बड़ी है।
यदि आप वास्तव में बड़े मानों का प्रिंट आउट लेना चाहते हैं, तो Decimal
प्रकार का उपयोग करके देखें। यहां कुछ कोड है जो मेरे लिए काम करता है:
import UIKit
var str = "Hello, playground"
let doubleValue = Double(23450000000000000000)
Swift.print("hello")
Swift.print(doubleValue)
Swift.print(String(format: "%.0f", doubleValue))
var decimalValue = NSNumber(value: doubleValue).decimalValue
var result = Decimal()
NSDecimalRound(&result, &decimalValue, 0, .plain)
Swift.print(result)
जिसे मैंने Yervand's answer इस संबंधित पोस्ट के लिए
यदि आप "234500000000000000000000
" (वहां कुछ अतिरिक्त शून्य) जैसी बड़ी संख्याओं की कोशिश करते हैं, तो आप NSDecimalRound
ऐसा करने का मूल्य देखेंगे।
यदि आप एलएलडीबी में अपना डबलवैल्यू प्रिंट करना चाहते हैं, तो ब्रेकपॉइंट पर po String(format: "%.0f", doubleValue)
करने का प्रयास करें जहां doubleValue
परिभाषित किया गया है और आपके पास अच्छी किस्मत होनी चाहिए।