1

我需要将小数转换为 BigInteger 类型,但结果为零。考虑以下代码:

BigInteger x = new BigInteger(0.6);
var res = BigInteger.Pow(x, 10) / Factorial(30);

在第一行 0.6 转换为 BigInteger 结果为零并且整个代码返回错误的结果。任何想法?

4

2 回答 2

1

的整数部分0.60所以结果是正确的。

如果您想使用Math.Round()转换为在您的情况下为1.

BigInteger x = new BigInteger(Math.Round(0.6));
于 2013-03-05T14:06:55.973 回答
0

来自:http: //msdn.microsoft.com/en-us/library/system.numerics.biginteger.aspx

“浮点值在分配给 BigInteger 之前会被截断。” 因此,请参阅以下代码片段(来自源代码):

BigInteger bigIntFromDouble = new BigInteger(179032.6541);
Console.WriteLine(bigIntFromDouble);
// The example displays the following output: 
//   179032 

结果,BigInteger x = new BigInteger(0.6);由于截断...这是预期的行为,您的结果为零。

于 2013-03-05T14:04:21.880 回答