小さい数値を 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);
切り捨てのため、結果はゼロになります...これは予想される動作です。