我想在小数点后创建超过 16,000 个数字的 pi,但问题是我无法找到任何可以满足我愿望的类型。我尝试使用对象,但它会在 10 之后对数字进行四舍五入,我认为使用字符串但字符串类型不能做减号或加号,如果我将转换为 int,它将变为圆形。你知道我可以使用的任何其他类型吗,或者我怎样才能使它与字符串一起工作,例如 http://files.extremeoverclocking.com/file.php?f=36这个程序最多可以计算 3200 万
谢谢
看看这个页面,它的BigNumber
类。
首先要注意的是,我们不能在 C# 中使用任何原始类型:它们只是没有足够的精度(例如,双精度类型只有 15 个有效数字,我们想要计算,比如说, 10000)。我们需要一个大精度的数字库,但在 .NET Framework 中没有类似的东西,所以我们要做的第一件事就是编写一个 BigNumber 类。
该页面还提供了将pi计算到小数点后 1000 位的示例用法,因此运行 16000 应该相当简单。
运行 16000 位需要大约一秒半,而运行 160,000 位需要 2 分钟多一点。
这是我的PrintAsTable()
功能,链接的帖子留给读者作为练习:
public string PrintAsTable() {
var data = Print();
StringBuilder sb = new StringBuilder();
for (int i = 0; i < data.Length; i++)
{
if (data[i] == '.') sb.AppendLine(".");
else if ((i -1) % 50 == 0) sb.AppendLine(data[i].ToString());
else if ((i -1) % 10 == 0) {sb.Append(data[i].ToString()); sb.Append(" ");}
else sb.Append(data[i].ToString());
}
return sb.ToString();
}