.NET 4 System.Numerics.BigInteger構造を使用していますが、ドキュメントとは異なる結果が得られます。
BigInteger.ToString()メソッドのドキュメントには次のように書かれています。
ToString()メソッドは、小数点以下50桁の精度をサポートします。つまり、BigInteger値が50桁を超える場合、出力文字列には最上位50桁のみが保持されます。他のすべての数字はゼロに置き換えられます。
10進数の60桁を取り、BigInteger
それをに変換するコードがありstring
ます。有効数字60桁string
は、有効数字を失いませんでした。
const string vString = "123456789012345678901234567890123456789012345678901234567890";
Assert.AreEqual(60, vString.Length);
BigInteger v = BigInteger.Parse(vString);
Assert.AreEqual(60, v.ToString().Length);
Assert.AreEqual('9', v.ToString()[58]);
Assert.AreEqual('1', v.ToString()[0]);
Assert.AreEqual(vString, v.ToString());
Assert.AreEqual(vString, v.ToString("G"));
すべてのアサートが合格します。
ドキュメントの引用部分は正確にはどういう意味ですか?