2012-03-09 38 views
1

如何將此數字轉換爲浮點數?它是35.77091272818393,類型NSString。問題是,如果我使用從NSString轉換爲浮點數?

[str doubValue] 

它返回35.770912。


我想這個字符串

NSString *tt =[NSString stringWithFormat:@"%.14f", 35.77091272818393 ]; 

轉換爲使用

var=[tt floatValue]; 

的浮動,但它不具有足夠的精度 - 它只返回35.7709127,而不是所有的數字。

回答

6

你的問題是你看到的值是35.770912是四捨五入的雙精度浮點值。如果你想要更多的小數點,比你可以使用類似以下內容:

[NSString stringWithFormat:@"%.14", @"35.77091272818393"]; 

這將打印出值14個小數點,你會看到,精度沒有被丟在了浮點值。


你有,因爲你所訪問的字符串,而不是doubleValue屬性的floatValue財產與你問題的第二部分的問題。你提到的數字比float提供的精度要高。您必須以雙精度浮點類型存儲該數字。像這樣的東西應該解決您的問題:

NSString *tt = [NSString stringWithFormat:@"%.14f", 35.77091272818393]; 
double var = [tt doubleValue]; 
+0

我的問題是,我想影響此resultat 的NSString * TT = [的NSString stringWithFormat:@ 「%14F」,35.77091272818393]。 var = [tt floatValue];但我有精度問題,因爲只返回給我35.7709127而不是全部數字 – 2012-03-12 08:17:05

+0

我在我的答案中添加了更多詳細信息以解決您的問題。 – 2012-03-12 14:38:19

+0

兩天來,我一直在看這個問題,直到我找到這個職位。上述解決方案工作。 – Jeremy 2014-03-21 23:15:36