मैं एक स्ट्रिंग को एक डबल में बदलना चाहता हूं और उस पर कुछ गणित करने के बाद, इसे एक स्ट्रिंग में परिवर्तित करता हूं।
मैं ऑब्जेक्टिव-सी में यह कैसे करूं?
क्या निकटतम पूर्णांक के लिए भी एक डबल चक्कर लगाने का एक तरीका है?
मैं एक स्ट्रिंग को एक डबल में बदलना चाहता हूं और उस पर कुछ गणित करने के बाद, इसे एक स्ट्रिंग में परिवर्तित करता हूं।
मैं ऑब्जेक्टिव-सी में यह कैसे करूं?
क्या निकटतम पूर्णांक के लिए भी एक डबल चक्कर लगाने का एक तरीका है?
जवाबों:
आप NSString को डबल में बदल सकते हैं
double myDouble = [myString doubleValue];
निकटतम इंट के लिए गोलाई फिर से की जा सकती है
int myInt = (int)(myDouble + (myDouble>0 ? 0.5 : -0.5))
मैं ईमानदारी से यकीन नहीं कर रहा हूँ अगर वहाँ से एक स्ट्रिंग में बदलने के लिए एक और अधिक सुव्यवस्थित तरीका है
NSString* myNewString = [NSString stringWithFormat:@"%d", myInt];
[[NSNumber numberWithInt:myInt] stringValue]
वास्तव में एक स्ट्रिंग से एक संख्या में ठीक से परिवर्तित करने के लिए, आपको NSNumberFormatter
उस लोकेल के लिए कॉन्फ़िगर की गई आवृत्ति का उपयोग करने की आवश्यकता है, जिसमें से आप स्ट्रिंग पढ़ रहे हैं।
अलग-अलग स्थान अलग-अलग संख्याओं को प्रारूपित करेंगे। उदाहरण के लिए, दुनिया के कुछ हिस्सों में, COMMA
दशमलव विभाजक के रूप में उपयोग किया जाता है , जबकि अन्य में यह है PERIOD
- और हजारों विभाजक (जब उपयोग किया जाता है) उलटा होता है। सिवाय इसके कि कब एक जगह है। या बिल्कुल मौजूद नहीं है।
यह वास्तव में इनपुट की सिद्धता पर निर्भर करता है। NSNumberFormatter
आपके इनपुट को फ़ॉर्मेट किया गया है और इससे -[NSFormatter numberFromString:]
प्राप्त करने के लिए उपयोग करने के तरीके के लिए सबसे सुरक्षित चीज़ कॉन्फ़िगर NSNumber
है। यदि आप रूपांतरण त्रुटियों को संभालना चाहते हैं, तो आप -[NSFormatter getObjectValue:forString:range:error:]
इसके बजाय उपयोग कर सकते हैं ।
Olliej के जवाब देने के लिए जोड़ा जा रहा है, आप के साथ एक स्ट्रिंग के लिए एक पूर्णांक पीछे से परिवर्तित कर सकते हैं NSNumber
की stringValue
:
[[NSNumber numberWithInt:myInt] stringValue]
stringValue
एक NSNumber
आह्वान पर descriptionWithLocale:nil
, आपको मूल्य का स्थानीयकृत स्ट्रिंग प्रतिनिधित्व प्रदान करता है। मुझे यकीन नहीं है कि अगर [NSString stringWithFormat:@"%d",myInt]
आप ठीक से स्थानीयकृत प्रतिशोध देंगे myInt
।
olliej की गोलाई पद्धति नकारात्मक संख्याओं के लिए गलत है
यहाँ एक विकल्प है
int myInt = (int)(myDouble + (myDouble>0 ? 0.5 : -0.5))
आप बेशक math.h से एक राउंडिंग फ़ंक्शन का उपयोग कर सकते हैं
यहाँ NSNumberFormatter रीडिंग लोकल नम्बर स्ट्रिंग (xCode 3.2.4, osX 10.6) का वर्किंग सैंपल है, दूसरों को घंटों बचाने के लिए जो मैंने अभी-अभी मैसेज किया है। खबरदार: जबकि यह "8,765.4" जैसे पीछे आने वाले रिक्त स्थान को संभाल सकता है, यह प्रमुख सफेद स्थान को संभाल नहीं सकता है और यह आवारा पाठ वर्णों को संभाल नहीं सकता है। (खराब इनपुट स्ट्रिंग्स: "8" और "8q" और "8 q")।
NSString *tempStr = @"8,765.4";
// localization allows other thousands separators, also.
NSNumberFormatter * myNumFormatter = [[NSNumberFormatter alloc] init];
[myNumFormatter setLocale:[NSLocale currentLocale]]; // happen by default?
[myNumFormatter setFormatterBehavior:NSNumberFormatterBehavior10_4];
// next line is very important!
[myNumFormatter setNumberStyle:NSNumberFormatterDecimalStyle]; // crucial
NSNumber *tempNum = [myNumFormatter numberFromString:tempStr];
NSLog(@"string '%@' gives NSNumber '%@' with intValue '%i'",
tempStr, tempNum, [tempNum intValue]);
[myNumFormatter release]; // good citizen
nil
मूल्यवान रिटर्न देता NSNumber*
है। मैं उस समस्या को पुन: पेश नहीं कर सकता जो आपके पास प्रमुख श्वेत स्थान और आवारा पाठ पात्रों के साथ थी, IMO यह ठीक से काम कर रहा है। " 28.5 "
28.5 के रूप में पार्स करता है, और "gibberish28.5"
, "28.5gibberish"
और "gibberish28.5gibberish"
सब unparseable कर रहे हैं; " 2 8 . 5. "
अप्राप्य है लेकिन यह असामान्य नहीं है।
// Converting String in to Double
double doubleValue = [yourString doubleValue];
// Converting Double in to String
NSString *yourString = [NSString stringWithFormat:@"%.20f", doubleValue];
// .20f takes the value up to 20 position after decimal
// Converting double to int
int intValue = (int) doubleValue;
or
int intValue = [yourString intValue];
संख्या से स्ट्रिंग में रूपांतरण के लिए, नए शाब्दिक सिंटैक्स (XCode> = 4.4) का उपयोग करने के बारे में, इसकी थोड़ी अधिक कॉम्पैक्ट।
int myInt = (int)round( [@"1.6" floatValue] );
NSString* myString = [@(myInt) description];
(यह एक NSNumber के रूप में बक्से और NSObjects विवरण विधि का उपयोग करके स्ट्रिंग में कनवर्ट करता है )
इस उदाहरण से यहां, आप रूपांतरणों को दोनों तरीकों से देख सकते हैं:
NSString *str=@"5678901234567890";
long long verylong;
NSRange range;
range.length = 15;
range.location = 0;
[[NSScanner scannerWithString:[str substringWithRange:range]] scanLongLong:&verylong];
NSLog(@"long long value %lld",verylong);
टेक्स्ट टेक्स्ट को पूर्णांक में दर्ज करें
double mydouble=[_myTextfield.text doubleValue];
निकटतम डबल करने के लिए गोलाई
mydouble=(round(mydouble));
निकटतम int (केवल सकारात्मक मूल्यों पर विचार) के लिए गोलाई
int myint=(int)(mydouble);
डबल से स्ट्रिंग में परिवर्तित करना
myLabel.text=[NSString stringWithFormat:@"%f",mydouble];
या
NSString *mystring=[NSString stringWithFormat:@"%f",mydouble];
int से स्ट्रिंग में परिवर्तित करना
myLabel.text=[NSString stringWithFormat:@"%d",myint];
या
NSString *mystring=[NSString stringWithFormat:@"%f",mydouble];