मैं एक स्ट्रिंग से Double का उपयोग कर बना रहा हूं:

let doubleValue = Double(value)

value 23450000000000000000 है

और डीबगर में मैं doubleValue को 2.345e+20 के रूप में दिखाता हूं

और मेरे कोड में डबलवैल्यू एन्कोड करने के लिए एन्कोडर (एनकोडर: एन्कोडर) है।

try container.encode(doubleValue, forKey: .akey)

जब मैं इसे चलाता हूं, तो मैं देखता हूं कि doubleValue को 2.345e+20 के रूप में एन्कोड किया जा रहा है। क्या doubleValue को लंबे प्रारूप में एन्कोड करने का कोई तरीका है? यानी 23450000000000000000?

0
hap497 29 सितंबर 2020, 04:16

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 परिभाषित किया गया है और आपके पास अच्छी किस्मत होनी चाहिए।

0
Michael Dautermann 29 सितंबर 2020, 05:37