ser*_*0ne 11 .net c# biginteger division
我正在编写一个需要在C#中准确划分BigInteger类的类.
例:
BigInteger x = BigInteger.Parse("1000000000000000000000000000000000000000000000000000000000000000000000000000000000000");
BigInteger y = BigInteger.Parse("2000000000000000000000000000000000000000000000000000000000000000000000000000000000000");
x /= y;
Console.WriteLine(x.ToString());
//Output = 0
Run Code Online (Sandbox Code Playgroud)
问题是作为一个整数,自然它不包含十进制值.我怎样才能克服这一点,得到0.5的实际结果(给出的例子).
PS解决方案必须能够准确地划分任何BigInteger,而不仅仅是示例!
Jep*_*sen 15
在上面的例子中,数字仍然很小,可以转换为double,所以在这种情况下你可以说
double result = (double)x / (double)y;
Run Code Online (Sandbox Code Playgroud)
如果x并且y对于一个double但仍然可比的太大,也许这个伟大的技巧是有帮助的:
double result = Math.Exp(BigInteger.Log(x) - BigInteger.Log(y));
Run Code Online (Sandbox Code Playgroud)
但总的来说,当BigInteger它们很大,并且它们的商数也很大时,如果不导入第三方库,这很难做到.
你需要什么准确度?一种方法是:
double除以1000代码相同:
BigInteger x = BigInteger.Parse("1000000000000000000000000000000000000000000000000000000000000000000000000000000000000");
BigInteger y = BigInteger.Parse("2000000000000000000000000000000000000000000000000000000000000000000000000000000000000");
x *= 1000;
x /= y;
double result = (double)x;
result /= 1000;
Console.WriteLine(result);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5258 次 |
| 最近记录: |