4

私はdouble[]配列のネット xml シリアル化をテストしているので、シリアル化されたほとんどの文字 int を持つ double 値が何であるかを知りたいので、シリアル化された配列の最大出力サイズをテストできます。

4

2 に答える 2

6

24 のはずです。

double.MinValue.ToString("R").Length

double.ToString(string)から

または "R"。数値をその精度で表現できる場合は 15 桁を返し、数値を最大精度でしか表現できない場合は 17 桁を返します。

最大 17 桁で、符号に 1 を加え、小数点記号に 1 を加え、E+xxx に 5 を加えます ( double.MaxValueis1.7976931348623157E+308double.Epsilon、最小値> 0、 is 4.94065645841247E-324、両方ともE[+-][0-9]{1,3})。

技術的には、いくつかの奇妙な言語では、

var str2 = double.PositiveInfinity.ToString("R");

CultureInfo.InvariantCulture(文字列がローカライズされているため)長くなる可能性がありますが、数字を!でシリアル化していただければ幸いです。

ただし、ユーザーはコントロール パネルからカルチャを変更できた可能性があることを覚えておいてください...次のようなものです。

var culture = (CultureInfo)CultureInfo.CurrentCulture.Clone();
culture.NumberFormat.NegativeSign = "Negative";
culture.NumberFormat.NumberDecimalSeparator = "DecimalSeparator";
var str4 = double.MinValue.ToString("R", culture);

結果:Negative1DecimalSeparator7976931348623157E+308

このため、CultureInfo.InvariantCulture:-)を使用することをお勧めします。

しかし、真実を知りたい場合は、コントロールパネルで、小数点記号を最大 3 文字、負号を最大 4 文字にすることができます (試してみるか、LOCALE_SDECIMALLOCALE_SNEGATIVESIGNを確認してください。明らかに終了null文字です) .NET では無視できます)

于 2013-09-04T11:55:01.137 に答える