Java - Los valores de la consola de NetBeans se me pasan a negativo

 
Vista:

Los valores de la consola de NetBeans se me pasan a negativo

Publicado por Bear (1 intervención) el 13/01/2018 17:47:17
Buenas tardes, estoy intentado como reto personal hacer un programa que calcule pi por medio de una serie numérica. El caso es que he escrityo una serie de lineas de código para poder monitorizar mi programa mejor pero al parte del porcentaje me falla cuando le doy un valor a la variable "n" superior a 21500000.
El código es el siguiente:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
package picalculator;
 
import java.util.Scanner;
 
public class PiCalculator {
 
    public static void main(String[] args) {
 
//Variables             
 
        double piSqrt = 0, down = 2, pi = 1;    //"piSqrt" tiene el valor de pi aislado, "pi", el de sin aislar
        long n = 0, percent = 0, percentAux = 0;//"n" guarda  la precisión ordenada, "percent" guarda el porcentaje y 
         int data = 0;                          //"percentAux" guarda percenta para más tarde compararlo                                              
                                                //"data" guarda el valor que indica si el usuario quiere ver la monitorización           
        Scanner in = new Scanner(System.in);
 
        System.out.print("How much precision do you want: ");
        n = in.nextLong();
 
//aquí pregunta al usuario si quiere que se muestre la información que da problemas
 
        while(data == 0 || data > 2){
 
            if(data > 2){
                System.out.println("We could not find that answer in our options, we will repeat the question:");
            }
            System.out.println("Do you want aditional data?");
            System.out.println("1-Yes 2-No");
            data = in.nextInt();
        }
 
//aquí el programa empieza con un ciiclo que aplica una formula
 
        for(int i = 0; i <= n; i++){
 
            pi += 1/(double)Math.pow(down,2);
 
/*aquí, en caso de que el usuario quiera la información al finalizar una serie de ciclos que dependen de la precisión elegida por el usuario*/
 
            if(data == 1){
 
//aquí se aplica una regla de 3 para averiguar el porcentaje que indica el progreso del programa
 
                percent = (i*100)/n;
 
//aquí se compara que si el porcentaje no ha cambiado en respecto al anterior ciclo que no se imprima
 
                if(percentAux != percent){
                    System.out.println(i + " of " + n + " / " + percent + "%");
                }
 
//aquí se guarde el porcentaje obtenido en una variable para en el siguiente ciclo compararlo
 
                percentAux = percent;
 
            }
            down++;
        }
 
//aquí se aisla el número pi y se imprime
 
        pi = pi*6;
        piSqrt = (double)Math.sqrt(pi);
 
        System.out.println("Pi: " + piSqrt);
 
    }
 
}
    }
 
}

Todas las impresiones a la consola están escritas en oinglés pero no es relevante si entiendes el código.
El prolema es que, como ya expliqué al principio, si a "n" le doy un valor superior a 21500000, en la consola me aparece esto:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
How much precision do you want: 21500000
Do you want aditional data?
1-Yes 2-No
1
215000 of 21500000 / 1%
430000 of 21500000 / 2%
645000 of 21500000 / 3%
860000 of 21500000 / 4%
1075000 of 21500000 / 5%
1290000 of 21500000 / 6%
1505000 of 21500000 / 7%
1720000 of 21500000 / 8%
1935000 of 21500000 / 9%
2150000 of 21500000 / 10%
2365000 of 21500000 / 11%
2580000 of 21500000 / 12%
2795000 of 21500000 / 13%
3010000 of 21500000 / 14%
3225000 of 21500000 / 15%
3440000 of 21500000 / 16%
3655000 of 21500000 / 17%
3870000 of 21500000 / 18%
4085000 of 21500000 / 19%
4300000 of 21500000 / 20%
4515000 of 21500000 / 21%
4730000 of 21500000 / 22%
4945000 of 21500000 / 23%
5160000 of 21500000 / 24%
5375000 of 21500000 / 25%
5590000 of 21500000 / 26%
5805000 of 21500000 / 27%
6020000 of 21500000 / 28%
6235000 of 21500000 / 29%
6450000 of 21500000 / 30%
6665000 of 21500000 / 31%
6880000 of 21500000 / 32%
7095000 of 21500000 / 33%
7310000 of 21500000 / 34%
7525000 of 21500000 / 35%
7740000 of 21500000 / 36%
7955000 of 21500000 / 37%
8170000 of 21500000 / 38%
8385000 of 21500000 / 39%
8600000 of 21500000 / 40%
8815000 of 21500000 / 41%
9030000 of 21500000 / 42%
9245000 of 21500000 / 43%
9460000 of 21500000 / 44%
9675000 of 21500000 / 45%
9890000 of 21500000 / 46%
10105000 of 21500000 / 47%
10320000 of 21500000 / 48%
10535000 of 21500000 / 49%
10750000 of 21500000 / 50%
10965000 of 21500000 / 51%
11180000 of 21500000 / 52%
11395000 of 21500000 / 53%
11610000 of 21500000 / 54%
11825000 of 21500000 / 55%
12040000 of 21500000 / 56%
12255000 of 21500000 / 57%
12470000 of 21500000 / 58%
12685000 of 21500000 / 59%
12900000 of 21500000 / 60%
13115000 of 21500000 / 61%
13330000 of 21500000 / 62%
13545000 of 21500000 / 63%
13760000 of 21500000 / 64%
13975000 of 21500000 / 65%
14190000 of 21500000 / 66%
14405000 of 21500000 / 67%
14620000 of 21500000 / 68%
14835000 of 21500000 / 69%
15050000 of 21500000 / 70%
15265000 of 21500000 / 71%
15480000 of 21500000 / 72%
15695000 of 21500000 / 73%
15910000 of 21500000 / 74%
16125000 of 21500000 / 75%
16340000 of 21500000 / 76%
16555000 of 21500000 / 77%
16770000 of 21500000 / 78%
16985000 of 21500000 / 79%
17200000 of 21500000 / 80%
17415000 of 21500000 / 81%
17630000 of 21500000 / 82%
17845000 of 21500000 / 83%
18060000 of 21500000 / 84%
18275000 of 21500000 / 85%
18490000 of 21500000 / 86%
18705000 of 21500000 / 87%
18920000 of 21500000 / 88%
19135000 of 21500000 / 89%
19350000 of 21500000 / 90%
19565000 of 21500000 / 91%
19780000 of 21500000 / 92%
19995000 of 21500000 / 93%
20210000 of 21500000 / 94%
20425000 of 21500000 / 95%
20640000 of 21500000 / 96%
20855000 of 21500000 / 97%
21070000 of 21500000 / 98%
21285000 of 21500000 / 99%
21474837 of 21500000 / -99%
Pi: 3.141592609172779
BUILD SUCCESSFUL (total time: 24 seconds)

Todo bien hasta que ves el último porcentaje, que está en negativo, y con este número es solo el final, pero a más grande es el número antes pasa esto (por ejemplo: con 100000000 el porcentaje negativo empieza en -21%) y desués de un determinado número de porcentajes negativos vuelve a positivo y repite el ciclo.

Consola con 100000000:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
How much precision do you want: 100000000
Do you want aditional data?
1-Yes 2-No
1
1000000 of 100000000 / 1%
2000000 of 100000000 / 2%
3000000 of 100000000 / 3%
4000000 of 100000000 / 4%
5000000 of 100000000 / 5%
6000000 of 100000000 / 6%
7000000 of 100000000 / 7%
8000000 of 100000000 / 8%
9000000 of 100000000 / 9%
10000000 of 100000000 / 10%
11000000 of 100000000 / 11%
12000000 of 100000000 / 12%
13000000 of 100000000 / 13%
14000000 of 100000000 / 14%
15000000 of 100000000 / 15%
16000000 of 100000000 / 16%
17000000 of 100000000 / 17%
18000000 of 100000000 / 18%
19000000 of 100000000 / 19%
20000000 of 100000000 / 20%
21000000 of 100000000 / 21%
21474837 of 100000000 / -21%
21949673 of 100000000 / -20%
22949673 of 100000000 / -19%
23949673 of 100000000 / -18%
24949673 of 100000000 / -17%
25949673 of 100000000 / -16%
26949673 of 100000000 / -15%
27949673 of 100000000 / -14%
28949673 of 100000000 / -13%
29949673 of 100000000 / -12%
30949673 of 100000000 / -11%
31949673 of 100000000 / -10%
32949673 of 100000000 / -9%
33949673 of 100000000 / -8%
34949673 of 100000000 / -7%
35949673 of 100000000 / -6%
36949673 of 100000000 / -5%
37949673 of 100000000 / -4%
38949673 of 100000000 / -3%
39949673 of 100000000 / -2%
40949673 of 100000000 / -1%
41949673 of 100000000 / 0%
43949673 of 100000000 / 1%
44949673 of 100000000 / 2%
45949673 of 100000000 / 3%
46949673 of 100000000 / 4%
47949673 of 100000000 / 5%
48949673 of 100000000 / 6%
49949673 of 100000000 / 7%
50949673 of 100000000 / 8%
51949673 of 100000000 / 9%
52949673 of 100000000 / 10%
53949673 of 100000000 / 11%
54949673 of 100000000 / 12%
55949673 of 100000000 / 13%
56949673 of 100000000 / 14%
57949673 of 100000000 / 15%
58949673 of 100000000 / 16%
59949673 of 100000000 / 17%
60949673 of 100000000 / 18%
61949673 of 100000000 / 19%
62949673 of 100000000 / 20%
63949673 of 100000000 / 21%
64424510 of 100000000 / -21%
64899346 of 100000000 / -20%
65899346 of 100000000 / -19%
66899346 of 100000000 / -18%
67899346 of 100000000 / -17%
68899346 of 100000000 / -16%
69899346 of 100000000 / -15%
70899346 of 100000000 / -14%
71899346 of 100000000 / -13%
72899346 of 100000000 / -12%
73899346 of 100000000 / -11%
74899346 of 100000000 / -10%
75899346 of 100000000 / -9%
76899346 of 100000000 / -8%
77899346 of 100000000 / -7%
78899346 of 100000000 / -6%
79899346 of 100000000 / -5%
80899346 of 100000000 / -4%
81899346 of 100000000 / -3%
82899346 of 100000000 / -2%
83899346 of 100000000 / -1%
84899346 of 100000000 / 0%
86899346 of 100000000 / 1%
87899346 of 100000000 / 2%
88899346 of 100000000 / 3%
89899346 of 100000000 / 4%
90899346 of 100000000 / 5%
91899346 of 100000000 / 6%
92899346 of 100000000 / 7%
93899346 of 100000000 / 8%
94899346 of 100000000 / 9%
95899346 of 100000000 / 10%
96899346 of 100000000 / 11%
97899346 of 100000000 / 12%
98899346 of 100000000 / 13%
99899346 of 100000000 / 14%
Pi: 3.14159264498239
BUILD SUCCESSFUL (total time: 6 seconds)

Necesito ayuda porque llevo bastante tiempo intentando averiguar que es y no lo consigo. Gracias de antemano.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Los valores de la consola de NetBeans se me pasan a negativo

Publicado por Tom (1831 intervenciones) el 13/01/2018 18:57:27
for(long i = 0; i <= n; i++){
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar