0

CLLocationDegreesに変換する必要がある緯度/経度の値でNSDecimalNumberを変換する必要があります。-[NSDecimalNumber doubleValue]メソッドを使用しました。しかし、値はその精度を失います。値を同じにしたい。以下は私が話していることです(誰もがこの問題についてすでに知っていることを願っています).

NSString *coordStr = @"-33.890934125621094";
NSDecimalNumber *lat = [NSDecimalNumber decimalNumberWithString:coordStr];
NSLog(@"%@", lat); // -33.890934125621094
NSLog(@"%lf", [lat doubleValue]); // -33.890934

上記の代わりに私がすべき方法はありますか?

4

2 に答える 2

3

doubleValueメソッドで文字列を変換してみてください

NSString *coordStr = @"-33.890934125621094";

NSLog(@"%.17g",coordStr.doubleValue); //-33.890934125621094

この投稿をチェックしてください: iOS で完全な精度で double を印刷する方法は?

編集: ドキュメントには次の typedef double CLLocationDegrees;ように書かれています:double test = coordStr.doubleValue;問題はNSLog、完全な値が出力されないことだけです。ただし、代わりに double var は完全な値を保存します。

于 2012-06-04T09:38:22.290 に答える
1

CLLocationDegree は double です。そのため、最大精度は double データ型の精度にしか等しくなりません。

于 2012-06-04T10:13:45.780 に答える