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 に答える