Objective-C:将整个double值转换为字符串而不丢失数据

时间:2013-05-10 17:42:13

标签: objective-c string nsstring double

我有以下双重值:0.000900137869045636 我想将其转换为NSString

我已尝试过以下代码,但无论如何,它都将值舍入为此:0.000900138

[NSString stringWithFormat:@"%.20lf", [currentLocation coordinate].latitude];

我应该怎么做才能保持双号?

谢谢。

3 个答案:

答案 0 :(得分:40)

使用

创建NSNumber

NSNumber *myDoubleNumber = [NSNumber numberWithDouble:myDouble];

然后致电

[myDoubleNumber stringValue];

答案 1 :(得分:1)

简短回答:使用%.18lf - 使用0.000900137869045633测试 - > 0.000900137869045639。但是,不要自欺欺人,这是精确的,它只会因为四舍五入而起作用。

答案 2 :(得分:0)

就我所见,您的代码似乎没有任何问题:我只是尝试了以下内容

int main(int argc, const char * argv[])
{

    double foo = 0.000900137869045636;
    NSLog([NSString stringWithFormat:@"%.20lf", foo]);

    return 0;
}

日志输出为:

2013-05-10 14:00:18.492 Test[71101:303] 
0.00090013786904563598

所以不确定你的问题是什么,但它不在NSString创建中。