2014-01-22 3 views
0

Я не могу найти ответ на этот вопрос, но у меня есть строка с десятичной точкой в ​​нем, и когда я пытаюсь преобразовать ее в NSDecimalNumber I только верните целое число, а не десятичное или что будет после него. Это то, что я пытаюсь: Я не могу показаться, чтобы выяснитьНе видя десятичного числа из строки при преобразовании в NSDecimalNumer

someText.text = @"200.00"; 
tempAmountOwed = [NSDecimalNumber decimalNumberWithString:someText.text]; // gives me back 200 

если метод decimalNumberWithString лишает мой десятичной и игнорируя то, что приходит после него.

Спасибо за помощь!

+0

Попробуйте с помощью "200.45". – drekka

ответ

1

Вы можете использовать метод метода decimalNumberWithString: locale:.

для например: -

Кода:

NSLog(@"%@", [NSDecimalNumber decimalNumberWithString:@"200.00"]); 
NSLog(@"%@", [NSDecimalNumber decimalNumberWithString:@"200.00" locale:NSLocale.currentLocale]); 

Придает следующий журнал:

200 
200.00 

Надеется, что это помогает!

+0

Когда я пытаюсь выполнить этот код, я все равно возвращаю 200 для обоих этих журналов. – icekomo

0

Это совершенно нормально. Если ваша десятичная строка не содержит дробей, она не будет печатать их. Если вы хотите распечатать их, вы можете использовать NSNumberFormatter или преобразовать его в поплавок и распечатать его с %.2f сделать так:

NSString *text = @"200.00"; 
NSDecimalNumber *number = [NSDecimalNumber decimalNumberWithString:text]; 
NSLog(@"%@", number); //this will print "200" 

//solution #1 
NSNumberFormatter *numberFormatter = [[NSNumberFormatter alloc] init]; 
numberFormatter.numberStyle = NSNumberFormatterDecimalStyle; 
numberFormatter.minimumFractionDigits = 2; 
NSLog(@"%@", [numberFormatter stringFromNumber:number]); //this will print "200.00" 

//solution #2 
CGFloat number = [text floatValue]; 
NSLog(@"%.2f", number); //this will print "200.00" 
+0

Я стараюсь держаться подальше от поплавков, я имею дело с валютой и читаю о том, что вниз падает с их использования. Но спасибо за ответ! – icekomo

+0

Решение №1 работает без поплавков, оно работает с NSDecimalNumbers, а также с NSNumbers. Так вы должны идти. – Hannes

Смежные вопросы