Denna övning ber dig fixa fel i en klass för rationella tal och sedan använda den klassen för att beräkna ett närmevärde för π.
Magnus Myreen, september 2016.
Du får två filer:
Rational.java
definierar en klass för rationella talMain.java
är ett testprogram för Rational.java
Kör programmet med att köra main
i Main.java
.
När man kör testprogrammet så ser man att alla test inte fungerar. Var för fungerar inte testen?
Din uppgift är att fixa klassen Rational.java
.
Tips: det går att fixa det med att använda BigInteger
istället för den primitiva typen int
.
Din uppgift är att skriva ett program som räknar ett närmevärde för π med hjälp av Rational
klassen.
Beräkningen av närmevärdet kan göras på följande sätt. För att räkna ett närmevaräde som fungerar för 4 decimaler av π, kan du räkna fyra rader av följande oändliga summa.
1/1 * ( 4/(8*0+1) - 2/(8*0+4) - 1/(8*0+5) - 1/(8*0+6) ) +
1/16 * ( 4/(8*1+1) - 2/(8*1+4) - 1/(8*1+5) - 1/(8*1+6) ) +
1/(16*16) * ( 4/(8*2+1) - 2/(8*2+4) - 1/(8*2+5) - 1/(8*2+6) ) +
1/(16*16*16) * ( 4/(8*3+1) - 2/(8*3+4) - 1/(8*3+5) - 1/(8*3+6) ) +
...
För 5 decimlar räknar man 5 rader, för 6 decimalter 6 rader osv.
Rational
klassen har en metod som kan användas för utskrifter till String
. Exempel: följande kod
Rational r = new Rational(2,3);
r = r.multiply(new Rational(1000,1));
System.out.println("0." + r.floorIntegerAsString());
skriver ut: 0.666