【发布时间】:2012-08-08 06:50:30
【问题描述】:
我正在编写一个需要在 C# 中准确划分 BigInteger 类的类。
例子:
BigInteger x = BigInteger.Parse("1000000000000000000000000000000000000000000000000000000000000000000000000000000000000");
BigInteger y = BigInteger.Parse("2000000000000000000000000000000000000000000000000000000000000000000000000000000000000");
x /= y;
Console.WriteLine(x.ToString());
//Output = 0
问题是作为一个整数,它自然不保存十进制值。 我怎样才能克服这个以获得 0.5 的实际结果(给定示例)。
附:解决方案必须能够准确地划分任何 BigInteger,而不仅仅是示例!
【问题讨论】:
-
结果中需要多少位数?一般来说,当你将两个数字相除时,比如
10/7,数学结果有无限个小数。这很难在计算机中表示。 -
注意:这可能接近我正在寻找的答案:stackoverflow.com/questions/2863388/…
-
对于太多小数,请使用 Math.Round(result,2) 例如2位数
-
@AVD 示例中的数字不适合现有的
System.Decimal,因此您必须提供详细信息。 -
我知道这不是一个完全正统的想法......但我可以从技术上将 Java 的 BigDecimal 类移植到 C# 并使用它吗?
标签: c# .net biginteger division