I have this code:
package picalculator;
//import java.util.Scanner;
public class PiCalculator {
static int odd=1;
public static void main(String[] args) {
calculatePi();
}
public static void calculatePi() {
int counter=0;
double pi=4.0;
int num[];
num = new int[20];
num[0] = generateOdd();
num[1] = generateOdd();
num[2] = generateOdd();
num[3] = generateOdd();
num[4] = generateOdd();
num[5] = generateOdd();
num[6] = generateOdd();
num[7] = generateOdd();
num[8] = generateOdd();
num[9] = generateOdd();
num[10] = generateOdd();
num[11] = generateOdd();
num[12] = generateOdd();
num[13] = generateOdd();
num[14] = generateOdd();
num[15] = generateOdd();
num[16] = generateOdd();
num[17] = generateOdd();
num[18] = generateOdd();
num[19] = generateOdd();
for (int i=0;i<20;i++) {
if(counter == 0) {
pi -= 4/num[i];
counter++;
}else {
pi += 4/num[i];
counter--;
}
}
System.out.print(pi);
return;
}
public static int generateOdd() {
odd += 2;
return odd;
}
}
And for some reason it returns “3.0” even though it should return something more like “3.158…”
It seems like the double is being rounded down to an integer with a “.0” after it. Does anyone have ideas on how to fix this? Thanks in advance!
You have missed to cast the result to double.