1
したがって数値的方法でe(第3行目)を計算していました。数値計算によるe計算中の浮動小数点の不正確度
私は、私はすべての繰り返しを使用する要素の数を増やしました。そして、私がプログラムを実行すると、浮動小数点変数は私が理解していない方法で動作しました。ここにプログラムとその結果があります。
import java.util.Scanner;
public class Test {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
int factorial = 1;
int counter = 0;
int iterationNumber;
double total = 0;
int tempCounter;
System.out.print("Enter iteration number: ");
iterationNumber = input.nextInt();
while (counter <= iterationNumber) {
tempCounter = counter;
while ((tempCounter - 1) > 0) {
factorial *= tempCounter;
tempCounter--;
}
total += ((double)1/factorial);
System.out.println(total);
factorial = 1;
counter ++;
}
}
}
eの値がしばらくの代わりに増加減少し始めるんだから、なぜ私の質問はありますか?私は浮動小数点変数がこのプログラムとその背後にあるロジックの間にどのように動作するのかを知りたい。
もう1つの質問は、なぜそれが無限と言うのですか?
1 /(n!)が小さくなり過ぎると、フローポイントがオーバーフローして値が負になり、その結果が小さくなります。 – Blobonat
これらの計算には 'BigDecimal'を使ってみてください。精度と丸めモードを定義する必要がありますが、依然としてはるかに高い精度と高い数値範囲を得ることができます。 – Thomas