web-dev-qa-db-ja.com

Objective-C:データを失うことなくdouble値全体を文字列に変換します

次の二重値があります:0.000900137869045636NSStringに変換したい。

私は次のコードを試しましたが、何があっても、値をこれに丸めます:0.000900138

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

ダブルナンバーをそのままにするにはどうすればよいですか?

ありがとうございました。

17
thedp

を使用してNSNumberを作成する

NSNumber *myDoubleNumber = [NSNumber numberWithDouble:myDouble];

次に電話します

[myDoubleNumber stringValue];

43
m177312

短い答え:%.18lf-0.000900137869045633でテスト-> 0.000900137869045639。ただし、これは正確です。丸めが原因でのみ機能します。

1
CRD

私の知る限り、コードに問題はないようです。次のことを試したところ、

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の作成にはありません。

0
Ahmed Masud