2011-12-13 6 views
6

Mam następujący kod:objective-c stringvalue z podwójnym

double d1 = 12.123456789; 

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

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

Jak uzyskać ciąg znaków, który jest dokładnie taki sam jak D1?

Odpowiedz

6

Jak o

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

Albo po prostu pójść na podwójne jako

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

'% d' jest liczbą całkowitą – PengOne

+0

@PengOne Naprawiłem to dla niego, przekonwertowałem na'% lf', długie zmiennoprzecinkowe. –

+0

@ RichardJ.RossIII Rozumiem, że '% lf' jest potrzebne tylko podczas' skanowania '. – PengOne

11

To może pomóc spojrzeć na przewodniku Apple do 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 

zapoznania się również na floating point (in)accuracy, i oczywiście What Every Computer Scientist Should Know About Floating-Point Arithmetic.

Jeśli naprawdę chcesz, aby ciąg dokładnie pasował do podwójnego, następnie użyj NSString, aby go zakodować i zadzwoń pod doubleValue, kiedy chcesz uzyskać wartość. Zobacz także NSNumberFormatter.