2012-03-09 7 views
1

この番号をフロートに変換するにはどうすればよいですか? 35.77091272818393で、NSStringと入力します。問題は、使用すると、NSStringからfloatに変換しますか?

[str doubValue] 

は35.770912を返します。


私は、この文字列

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

var=[tt floatValue]; 

を使用してfloatに変換したいが、それは十分な精度を持っていない - それだけ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]; to var = [tt floatValue];しかし、私は正確なbeacauseについての問題がある35.7709127と私はすべての番号を返す –

+0

私はあなたの明確化に対処するために私の答えに追加の詳細を追加しました。 –

+0

2日間私はこの記事を見つけるまでこの問題を見ていました。上記の解決策が働いた。 – Jeremy

関連する問題