আমি একটি স্ট্রিংকে ডাবল রূপান্তর করতে চাই এবং তার উপর কিছু গণিত করার পরে এটিকে আবার স্ট্রিংয়ে রূপান্তর করতে চাই।
আমি ওজেক্টিভ-সিতে এটি কীভাবে করব?
নিকটতম পূর্ণসংখ্যার কাছেও দ্বিগুণ গোল করার কোনও উপায় আছে?
আমি একটি স্ট্রিংকে ডাবল রূপান্তর করতে চাই এবং তার উপর কিছু গণিত করার পরে এটিকে আবার স্ট্রিংয়ে রূপান্তর করতে চাই।
আমি ওজেক্টিভ-সিতে এটি কীভাবে করব?
নিকটতম পূর্ণসংখ্যার কাছেও দ্বিগুণ গোল করার কোনও উপায় আছে?
উত্তর:
আপনি একটি এনএসএসস্ট্রিংকে ডাবল হিসাবে রূপান্তর করতে পারেন
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
- এবং হাজার বিভাজক (যখন ব্যবহৃত হয়) বিপরীত হয়। এটি স্থান ছাড়াই a বা মোটেও উপস্থিত না।
এটি সত্যই ইনপুটটির প্রবর্তনের উপর নির্ভর করে। NSNumberFormatter
আপনার ইনপুটটি যেভাবে ফর্ম্যাট করা হয়েছে সেটির জন্য নিরাপদ কাজটি কনফিগার করা এবং এ থেকে এটি -[NSFormatter numberFromString:]
পেতে ব্যবহার করুন NSNumber
। আপনি যদি রূপান্তর ত্রুটিগুলি পরিচালনা করতে চান তবে আপনি -[NSFormatter getObjectValue:forString:range:error:]
পরিবর্তে ব্যবহার করতে পারেন ।
Olliej এর উত্তর যোগ করার পদ্ধতি, আপনার সাথে একটি স্ট্রিং আপনি কোন int পিছন থেকে রূপান্তর করতে পারেন NSNumber
এর stringValue
:
[[NSNumber numberWithInt:myInt] stringValue]
stringValue
একটি NSNumber
অনুরোধে descriptionWithLocale:nil
, আপনাকে স্থানীয় মানের স্ট্রিংয়ের উপস্থাপন করে। আমি আপনাকে নিশ্চিতরূপে নিশ্চিত করতে পারি না যে [NSString stringWithFormat:@"%d",myInt]
আপনি সঠিকভাবে স্থানীয়ভাবে পুনঃস্থাপন করবেন myInt
।
ওলিজেজের গোল করার পদ্ধতিটি নেতিবাচক সংখ্যার জন্য ভুল
এখানে একটি বিকল্প আছে
int myInt = (int)(myDouble + (myDouble>0 ? 0.5 : -0.5))
আপনি অবশ্যই গণিত থেকে একটি রাউন্ডিং ফাংশন ব্যবহার করতে পারেন
আমি এনএসএনম্বার ফর্ম্যাটটার স্থানীয় কাজের স্ট্রিং (xCode 3.2.4, ওএসএক্স 10.6) পড়ার একটি নমুনা রইলাম, অন্যকে যে ঘন্টার মধ্যে আমি ব্যয় করেছি তার কয়েক ঘন্টা বাঁচাতে। সাবধান: এটি "8,765.4" এর মতো ট্র্যাকিং ফাঁকাগুলি হ্যান্ডেল করতে পারে, তবে এটি শীর্ষস্থানীয় সাদা স্থান পরিচালনা করতে পারে না এবং এটি বিপথগামী পাঠ্য অক্ষরগুলি পরিচালনা করতে পারে না। (খারাপ ইনপুট স্ট্রিং: "8" এবং "8 কিউ" এবং "8 কিউ"।)
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 যেমন parses এবং "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];
একটি সংখ্যা থেকে একটি স্ট্রিংয়ে রূপান্তর করার জন্য, কীভাবে নতুন লিটারাল সিনট্যাক্স (এক্সকোড> = 4.4) ব্যবহার করবেন, এটি কিছুটা আরও কমপ্যাক্ট।
int myInt = (int)round( [@"1.6" floatValue] );
NSString* myString = [@(myInt) description];
(এটিকে এনএসএনবার হিসাবে বাক্স আপ করে এবং এনএসওবজেক্টের বর্ণনা পদ্ধতি ব্যবহার করে একটি স্ট্রিংয়ে রূপান্তরিত হয় )
এটি আমার জানা সবচেয়ে সহজ উপায়:
float myFloat = 5.3;
NSInteger myInt = (NSInteger)myFloat;
এই উদাহরণ থেকে এখানে, আপনি রূপান্তরগুলি উভয় উপায়ে দেখতে পারেন:
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 myint=(int)(mydouble);
ডাবল থেকে স্ট্রিং রূপান্তর
myLabel.text=[NSString stringWithFormat:@"%f",mydouble];
অথবা
NSString *mystring=[NSString stringWithFormat:@"%f",mydouble];
ইনট থেকে স্ট্রিংয়ে রূপান্তর করা
myLabel.text=[NSString stringWithFormat:@"%d",myint];
অথবা
NSString *mystring=[NSString stringWithFormat:@"%f",mydouble];