我有一些特定於語言環境的字符串(例如,0.01或0.01)。我想將此字符串轉換爲NSDecimalNumber。從examples I've seen thus far on the interwebs,這是通過使用一個NSNumberFormatter一拉完成:從特定於語言環境的字符串中獲取NSDecimalNumber?
NSString *s = @"0.07";
NSNumberFormatter *formatter = [[NSNumberFormatter alloc] init];
[formatter setFormatterBehavior:NSNumberFormatterBehavior10_4];
[formatter setGeneratesDecimalNumbers:YES];
NSDecimalNumber *decimalNumber = [formatter numberFromString:s];
NSLog([decimalNumber stringValue]); // prints 0.07000000000000001
我使用的是10.4模式(除了每個文檔被推薦,這也是在iPhone上唯一可用的模式),但指示我想要生成十進制數字的格式化程序。請注意,我簡化了我的示例(實際上我正在處理貨幣字符串)。不過,我顯然做了錯誤的事情,它返回一個值,說明浮點數的不精確性。
將區域設置特定的數字字符串轉換爲NSDecimalNumber的正確方法是什麼?
編輯:請注意,我的例子是爲了簡單。我問的問題也應該涉及到何時需要採用特定於區域的貨幣字符串並將其轉換爲NSDecimalNumber。此外,可以將其擴展爲特定於語言環境的百分比字符串,並將其轉換爲NSDecimalNumber。
只是一個側面說明,你應該格式化器的數字指向NSDecimalNumber指針。即NSDecimalNumber * decimalNumber =(NSDecimalNumber *)[formatter numberFromString:s]; – 2012-06-21 14:40:01