2014-01-22 47 views
0

我看不到找到對此的答案,但我有一個字符串,其中有一個小數點,當我嘗試將其轉換爲NSDecimalNumber時只能取回整數,而不是小數或它後面的數字。這就是我想:轉換成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