我有以下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