2009-05-01 42 views
31

Tôi đang cố sử dụng NSNumberFormatter để làm tròn số đến 5 chữ số thập phân trong ứng dụng iPhone, nhưng [formatter stringFromNumber:] luôn trả về chuỗi được làm tròn thành 0,001 (3 chữ số thập phân). Tôi đang làm gì sai?NSNumberFormatter chỉ tròn đến 3 chữ số thập phân

formatter = [[NSNumberFormatter alloc] init]; 
[formatter setNumberStyle:NSNumberFormatterDecimalStyle]; 
[formatter setRoundingMode:NSNumberFormatterRoundHalfUp]; 
[formatter setSecondaryGroupingSize:3]; 
[formatter setRoundingIncrement:[NSNumber numberWithDouble:0.00001]]; 

Trả lời

67

Hãy thử -setMaximumFractionDigits:-setMinimumFractionDigits:

Những cấu hình số chữ số sau dấu phân cách thập phân.

+0

Tôi nghĩ đó là những gì tôi đang tìm kiếm. Cảm ơn nhiều. – ChadK

+1

Cảm ơn Nathan! Tôi phải thiếu một cái gì đó trong khi đọc các tài liệu, nhưng làm thế nào để những khác nhau từ setMaximumSignificantDigits: và setMinimumSignificantDigits: (ngoài từ đáng kể )? –

+10

Chữ số phân số là số sau chữ số thập phân. Các chữ số quan trọng là độ chính xác tổng thể của số. Vì vậy, 12.345 có 5 chữ số có nghĩa và 3 chữ số thập phân. Trong khi 0,0012 có 2 chữ số có nghĩa và 4 chữ số thập phân. thiết lập (tối thiểu/tối đa) SignificantDigits: rất hữu ích cho đầu ra kiểu khoa học: 123000 sẽ là 1.23E5 với 3 chữ số có nghĩa. –

2

Hãy thử [formatter setFormat: @ "0.00000"]; thay vì setRoundingIncrement :.

+2

Tôi không nghĩ setFormat: khả dụng trên iPhone. Xem http://stackoverflow.com/questions/416037/iphone-nsnumberformatter-setformat – ChadK

+0

Thực ra, tôi lấy lại. setFormat: @ "0.00000" không hoạt động, nhưng nó không tròn ... Tôi luôn nhận được 5 con số sau thập phân - ví dụ: 0.10000, khi tôi thực sự chỉ muốn 0,1 trong trường hợp đó. – ChadK

+0

Ah, xin lỗi, tôi đã hiểu lầm những gì bạn đang cố gắng hoàn thành. – smorgan

Các vấn đề liên quan