一般的に次の形式の緯度/経度を保存する場合:44.087585(つまり、ドットと6dpの前に最大2つの数値)bigdecimalsを気にする必要がありますか?
Doubleを使用すると、小数点以下6〜7桁の緯度/経度をインチ単位で正確に計算するのに十分な精度があります。航空では、小数度が使用されている場合、通常、少なくとも小数点以下7桁になります。 NASAのシミュレーションでは、緯度/経度データは2倍であり、その他の姿勢と高度はすべて浮動です。言い換えると、高度の小数点以下6桁は重要ではありませんが、緯度/経度の小数点以下6桁はサブフィートの精度のためです。サブフィートまでの精度が必要な場合は、lat/lonにfloatを使用しないでください。
Google Earthをいじって、マーカーを配置して最後の10進数を操作することで、精度を確認できます。
double
は、緯度/経度に適しています。通貨の操作を開始するか、精度をさらに制御する必要がある場合、BigDecimal
はより重要になります。
精度が心配な場合は、おそらくBigDecimal
この投稿で説明する多くの理由により を使用する必要があります。とは言っても、double
またはfloat
shouldは、満足できるという点で必要なものを保存するのに十分です必要な値の範囲。
小数点以下6桁の精度では、double
またはfloat
がトリップすることはないと思いますが、何らかの方法で値の集計を開始すると、わずかな不正確さが加算され始める可能性があります。
double
には、それを格納するのに十分な精度があります。ただし、ユーザーに表示するときは、%.6f
ガベージディジットを出力しないようにします。
ダブルとして保存する場合の最悪の精度は約3 nmです。
Javaで計算する場合:
Math.ulp((double) 180) * 60 * 1852
3.1582203519064933E-9
ボーナスとして;フロートに保管することで得られる最悪の精度は1.7メートルです。
ナノGPSを使用してナノトラベルでナノロボットを制御したい場合は、BigDecimalを選択してください。それ以外の場合-float/doubleで十分です。