我有以下double值:0.000900137869045636
我想将其转换为NSString
。Objective-C:将整个double值转换为字符串而不丢失数据
我尝试下面的代码,但不管如何,便将价值这样的:0.000900138
[NSString stringWithFormat:@"%.20lf", [currentLocation coordinate].latitude];
我应该怎么做,以保持双号,因为它是什么?
谢谢。
我有以下double值:0.000900137869045636
我想将其转换为NSString
。Objective-C:将整个double值转换为字符串而不丢失数据
我尝试下面的代码,但不管如何,便将价值这样的:0.000900138
[NSString stringWithFormat:@"%.20lf", [currentLocation coordinate].latitude];
我应该怎么做,以保持双号,因为它是什么?
谢谢。
使用
NSNumber *myDoubleNumber = [NSNumber numberWithDouble:myDouble];
创建一个NSNumber然后调用
[myDoubleNumber stringValue];
+1即使我更喜欢* @(myDouble)*而不是* [NSNumber numberWithDouble:myDouble] *。 – 2013-05-10 17:58:18
这依赖于'NSNumber'的内部格式,并不是获得精确定义输出的好方法。 – 2013-05-10 18:01:35
这是行不通的,我得到'0.0009001378784887493' – bazik 2013-05-10 18:13:44
似乎没有要与你的代码中的任何问题,因为据我可以看到:我只是想以下和
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的。
简答题:使用%.18lf
- 使用0.000900137869045633 - > 0.000900137869045639进行测试。但是,不要自欺欺人,这只是因为四舍五入。
你如何检查结果字符串的值? – 2013-05-10 17:56:17
它不会为我截断,你确定你的double包含那个值吗? – dreamlax 2013-05-10 17:57:04
请注意,运行上述语句不会以某种方式修改“纬度”,以便稍后以更宽的格式打印。你需要使用'stringWithFormat'调用的输出。 – 2013-05-10 18:00:04