2011-12-13 19 views
6

Tôi đã đoạn mã sau:Objective-C stringValue từ đôi

double d1 = 12.123456789; 

NSString *test1 = [NSString stringWithFormat:@"%f", d1]; // string is: 12.123457 

NSString *test1 = [NSString stringWithFormat:@"%g", d1]; // string is: 12.1235 

Làm thế nào để tôi nhận được một chuỗi giá trị đó là chính xác giống như d1?

Trả lời

6

Làm thế nào về

NSString *test1 = [NSString stringWithFormat:@"%.15f", d1]; 

Hoặc đơn giản là đi cho đôi như

NSString *test1 = [NSString stringWithFormat:@"%lf", d1]; 
+0

'% d' là số nguyên – PengOne

+0

@PengOne Tôi đã sửa lỗi đó cho anh ấy, chuyển đổi thành'% lf', điểm nổi dài. –

+0

@ RichardJ.RossIII Hiểu biết của tôi là '% lf' chỉ cần thiết khi' quét'. – PengOne

11

Nó có thể giúp bạn có một cái nhìn tại hướng dẫn của Apple để String Format Specifiers.

%f 64-bit floating-point number 
%g 64-bit floating-point number (double), printed in the style of %e if the exponent is less than –4 or greater than or equal to the precision, in the style of %f otherwise 

Cũng đọc trên floating point (in)accuracy và tất nhiên What Every Computer Scientist Should Know About Floating-Point Arithmetic.

Nếu bạn thực sự muốn chuỗi khớp chính xác, hãy sử dụng NSString để mã hóa và gọi doubleValue khi bạn muốn giá trị. Ngoài ra hãy xem NSNumberFormatter.

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