0

我在 .Net 环境中使用 C#。我有一些用户输入的非常大的整数值,它们彼此相除并显示结果。现在我们知道 4/2 = 2 很简单,但是如果我们除以

.0232321312321312312312312321032132139813912839013809123801283012983901283012380129382190381209382190382190382109382109382109312/ 1200000232323213213213213878978398494849023834902348239048239048239048239048239048239048239048239048239048239048239048239048239048239048239048239048239048234902384902384902384902348239048239048234

答案就像 1.93601056119411E-197

我想将答案显示为完整的十进制/浮点值,而不是依赖 E 符号。

4

3 回答 3

2

我写了一些代码

using System.Numerics;

BigInteger x = BigInteger.Parse("0232321312321312312312312321032132139813912839013809123801283012983901283012380129382190381209382190382190382109382109382109312");
BigInteger y = BigInteger.Parse("1200000232323213213213213878978398494849023834902348239048239048239048239048239048239048239048239048239048239048239048239048239048239048239048239048239048234902384902384902384902348239048239048234
")
BigInteger answer = BigInteger.Divide(x, y)
return answer.ToString("D")

我认为这就是您要寻找的,如果您想要答案的小数部分,则必须使用 Complex 类型完成所有操作。从问题中不清楚你在做什么。

编辑:

这个怎么样

using System.Numerics;

BigInteger x = BigInteger.Parse("0232321312321312312312312321032132139813912839013809123801283012983901283012380129382190381209382190382190382109382109382109312");
BigInteger y = BigInteger.Parse("1200000232323213213213213878978398494849023834902348239048239048239048239048239048239048239048239048239048239048239048239048239048239048239048239048239048234902384902384902384902348239048239048234
")
Complex answer = Complex.Divide((Complex)x, (Complex)y)
return answer.ToString("F50") //If 50 decimal places is enough.
于 2011-04-13T13:28:55.943 回答
1

当我遇到同样的问题时,我使用.ToString("N0")它似乎可以完成这项工作。

于 2011-04-13T13:01:06.410 回答
1

我假设你不仅想在你的值前面加上“0.00 ...”,而且还想看到后面的“缺失”数字411

如果是这种情况,那么您不能对浮点数据类型执行此操作,因为 .NET 中的浮点数据类型根本不具备所需的精度。您将需要求助于外部库,例如W3b.Sine(未经测试,刚刚通过快速 Google 搜索找到),它允许任意精度的小数。

于 2011-04-13T13:07:35.027 回答