BigInteger
今日まで、パラメーターなしの (オーバーライドされた) インスタンス メソッドを介してa を出力するBigInteger.ToString()
と、返される文字列には、「大きな」整数の完全かつ正確な 10 進数表現が含まれると (暗黙のうちに) 想定していました。
しかし、私が読んだMSDNのドキュメントページで:
「ほとんどの場合、ToStringメソッドは 50 桁の精度をサポートします。つまり、BigInteger値が 50 桁を超える場合、最上位 50 桁のみが出力文字列に保持されます。他のすべての桁はゼロに置き換えられます。ただし、 , BigIntegerは数値をラウンドトリップするための"R"標準書式指定子をサポートしています. "R "書式指定文字列を使用してToString(String)メソッドによって返される文字列は、 BigInteger値全体を保持し、 ParseまたはTryParseメソッドを使用して、データを失うことなく元の値を復元します"._
myBigInt.ToString()
ただし、 と異なる例を見つけることができませんでしたmyBigInt.ToString("R")
。上記のページの備考の例は、主張されているように、私のバージョンのフレームワーク (.NET 4.0 SP1) では例を提供していません。(また"G"
、 と"R"
は同等のようですBigInteger
。)
ToString()
パラメータレスが整数の完全な10進展開を与えると仮定しても安全ですか? それらはフレームワークの動作を変更しましたか、それとも上記のサンプル コードは常に間違っていましたか?
注: SOは、これを書いた後、この「同様の質問」2984184を示していますが、2984184の回答ではゼロパラメーターの仕組みが実際には明確にされていないため、まだ質問を送信していますToString()
。
自分で編集:
ToString(String)
私の質問が (主に) 過負荷に関するものである場合、MSDN で過負荷をリンクするのは少し無頓着でしたToString()
。そのため、50 桁の制限についても言及しているが、50 桁を超える例を提供していないMSDNBigInteger.ToString()
も参照してください。