19

我有以下双精度值:0.000900137869045636 我想将其转换为NSString.

我已经尝试了以下代码,但无论如何,它都会将值四舍五入:0.000900138

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

我应该怎么做才能保持双数不变?

谢谢你。

4

3 回答 3

48

使用创建一个 NSNumber

NSNumber *myDoubleNumber = [NSNumber numberWithDouble:myDouble];

然后打电话

[myDoubleNumber stringValue];

于 2013-05-10T17:53:09.523 回答
2

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

于 2013-05-10T20:29:08.023 回答
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 创建中。

于 2013-05-10T18:02:10.527 回答