我正在使用 .NET 4 System.Numerics.BigInteger 结构,我得到的结果与文档不同。
在BigInteger.ToString() 方法的文档中它说:
ToString() 方法支持 50 个十进制数字的精度。也就是说,如果 BigInteger 值超过 50 位,则输出字符串中只保留 50 位最高有效位;所有其他数字都被零替换。
我有一些代码需要 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"));
所有的断言都通过了。
文档中引用的部分到底是什么意思?