import java.math.BigDecimal; class e { public static void main (String [ ] args) { int n, max=100; //max angir maks antall iterasjoner vi tillater int round = BigDecimal.ROUND_HALF_EVEN; //Avrundingsmodus boolean ferdig = false; //Blir true når vi er ferdige BigDecimal e, neste; //Summerer opp i e, neste er neste ledd i summen BigDecimal eps = new BigDecimal("1E-100"); //Feiltoleranse e = BigDecimal.valueOf(1); //Initialiserer med første ledd (1/0!) neste = BigDecimal.valueOf(1); //Neste ledd er 1/1! n = 1; //n starter på 1 while (!ferdig) //Så lenge vi ikke er ferdige { e = e.add(neste); //Legg til neste ledd n++; //Øk n neste = neste.divide(BigDecimal.valueOf(n),100,round); /* Siden 1/(n+1)!=(1/n!)/(n+1) er det lett å regne ut neste ledd. Vi bruker 100 desimaler. */ ferdig = (n==max) || (neste.compareTo(eps) < 0); /* Vi er ferdige når vi har gått max ganger eller neste ledd er mindre enn eps. */ } System.out.println("n=" + n + " e=" + e); } }