我需要将小数转换为 BigInteger 类型,但结果为零。考虑以下代码:
BigInteger x = new BigInteger(0.6);
var res = BigInteger.Pow(x, 10) / Factorial(30);
在第一行 0.6 转换为 BigInteger 结果为零并且整个代码返回错误的结果。任何想法?
我需要将小数转换为 BigInteger 类型,但结果为零。考虑以下代码:
BigInteger x = new BigInteger(0.6);
var res = BigInteger.Pow(x, 10) / Factorial(30);
在第一行 0.6 转换为 BigInteger 结果为零并且整个代码返回错误的结果。任何想法?
的整数部分0.6
是0
所以结果是正确的。
如果您想使用Math.Round()
转换为在您的情况下为1
.
BigInteger x = new BigInteger(Math.Round(0.6));
来自: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);
由于截断...这是预期的行为,您的结果为零。