Tôi có một số chuỗi là ngôn ngữ cụ thể (ví dụ: 0,01 hoặc 0,01). Tôi muốn chuyển đổi chuỗi này thành một NSDecimalNumber. Từ examples I've seen thus far on the interwebs, điều này được thực hiện bằng cách sử dụng một NSNumberFormatter a la:Lấy NSDecimalNumber từ một chuỗi địa phương cụ thể?
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
Tôi đang sử dụng 10,4 chế độ (ngoài việc bị đề nghị mỗi tài liệu, nó cũng là chế độ chỉ có sẵn trên iPhone) nhưng chỉ với trình định dạng mà tôi muốn tạo số thập phân. Lưu ý rằng tôi đã đơn giản hóa ví dụ của mình (tôi thực sự đang xử lý các chuỗi tiền tệ). Tuy nhiên, tôi rõ ràng đang làm sai điều gì đó để trả về một giá trị minh họa sự thiếu chính xác của các số dấu phẩy động.
Phương pháp chính xác để chuyển đổi chuỗi số địa phương cụ thể thành số NSDecimalNumber là gì?
Chỉnh sửa: Lưu ý rằng ví dụ của tôi là để đơn giản. Câu hỏi tôi hỏi cũng nên liên quan đến khi bạn cần phải lấy một chuỗi tiền tệ địa phương cụ thể và chuyển đổi nó thành một NSDecimalNumber. Ngoài ra, điều này có thể được mở rộng đến một chuỗi tỷ lệ phần trăm cụ thể của miền địa phương và chuyển đổi nó thành một NSDecimalNumber.
Chỉ cần một lưu ý phụ, bạn nên bỏ số của trình định dạng tới con trỏ tới NSDecimalNumber. I E. NSDecimalNumber * decimalNumber = (NSDecimalNumber *) [mã định dạng numberFromString: s]; –