0

緯度と経度が倍精度であり、それらをドット付きの文字列形式に変換したいと考えています。だから私は使用しています:

start_lon.ToString(CultureInfo.InvariantCulture)

私は正しい形式を取得します(ドットを取得します)が、最後の数字の一部が欠落していることがあります。なぜそれが起こっているのですか?たとえば、番号 16.597571661711296 を取得し、この文字列「16.5975716617113」を取得します。それが「四捨五入」(英語で正しい言葉かどうかはわかりません)であることは知っていますが、なぜですか?どうすればこれを修正できますか?

4

4 に答える 4

1

数値形式には 10 進数の数字が含まれているため、必要な結果が得られるように変更する必要があります。

var nfi = (System.Globalization.NumberFormatInfo)System.Globalization.CultureInfo.InvariantCulture.NumberFormat.Clone();
nfi.NumberDecimalDigits = xxx;

start_lon.ToString(nfi);
于 2013-05-22T08:57:35.327 に答える
0

どうすればこれを修正できますか?

decimalの代わりに type を使用します。double

decimal n = 16.597571661711296M;
// This writes: 16.597571661711296
Console.WriteLine(n.ToString("G", CultureInfo.InvariantCulture)); 
于 2013-05-22T09:01:03.283 に答える