objective-c stringvalue from double

我有以下代码:

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

如何获得与d1完全相同的string值?

它可以帮助你看看苹果公司的string格式说明符指南。

 %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 

也读了浮点数(精度) ,当然每个计算机科学家应该知道的浮点算术 。

如果你真的希望string完全匹配double,那么使用NSString对它进行编码,并在需要时调用doubleValue 。 也看看NSNumberFormatter

怎么样

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

或者干脆去双倍

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