Sample Java code to calculate PI to arbitrary precision. Esempi di codice Java per calcolare PI a precisione arbitraria. This uses Machin’s formula: pi/4 = 4*arctan(1/5) - arctan(1/239) . Machin questo utilizza la formula: pi / 4 = 4 * arctan (1 / 5) - arctan (1 / 239).

Notes: Note:
1. Run Pi with a positive integer precision value. Pi eseguire con un numero intero positivo valore di precisione. For example to calculate PI to 10 decimal places run: Per esempio per calcolare PI a 10 decimale eseguire:
java Pi 10 Java Pi 10
2. There are other algorithms and even better ones to calculate PI too. Ci sono altri algoritmi e anche di migliori per calcolare PI troppo. This is just an example. Questo è solo un esempio. I use it to load test my server. Lo uso per caricare il mio server di prova.
3. Try running with 1 million (1000000) to give your server a good workout Si provi ad eseguire con 1 milione (1000000) per dare il tuo server un buon allenamento :)

 import java.math.BigDecimal;  public class Pi {     public static void main(String args[]) throws NumberFormatException {         int digits = Integer.parseInt(args[0]);         String pi = computePi(digits).toString();         int freq[] = new int[10];         for(int i = 0;i < 10;i++) freq[i] = 0;         int c;         for(int i = 0;i < pi.length();i++) {             c = pi.charAt(i);             if(c == '.') continue;             c -= '0';             freq[c]++;         }         for(int i = 0;i < 10;i++) {             System.out.println("" + i + " " + freq[i]);         }     }     /** constants used in pi computation */     private static final BigDecimal FOUR = BigDecimal.valueOf(4);      /** rounding mode to use during pi computation */     private static final int roundingMode = BigDecimal.ROUND_HALF_EVEN;      /**      * Compute the value of pi to the specified number of      * digits after the decimal point. importazione java.math.BigDecimal; classe pubblica Pi (public static void main (String args []) getta NumberFormatException (int cifre = Integer.parseInt (args [0]); String pi = computePi (cifre). toString (); int freq [] = new int [10]; for (int i = 0; i <10; i + +) freq [i] = 0; int c; for (int i = 0; i <pi.length (); i + +) C = (pi.charAt (i); if (c == '.') Continue; c -='0 '; Freq [c] + +;) for (int i = 0; i <10; i + +) ( System.out.println ( "" + i + "" + freq [i]);)) / ** costanti utilizzato in pi di calcolo * / privato statica finale BigDecimal QUATTRO = BigDecimal.valueOf (4); / ** la modalità di arrotondamento di utilizzare nel corso di calcolo pi * / private static int finale roundingMode = BigDecimal.ROUND_HALF_EVEN; / ** * Calcola il valore di pi greco al numero specifico di * cifre dopo la virgola. The value is      * computed using Machin's formula:      *      *          pi/4 = 4*arctan(1/5) - arctan(1/239)      *      * and a power series expansion of arctan(x) to      * sufficient precision. Il valore è * Machin calcolata utilizzando la formula: * * pi / 4 = 4 * arctan (1 / 5) - arctan (1 / 239) * * e una serie di potenze di espansione di arctan (x) * sufficiente precisione. */     public static BigDecimal computePi(int digits) {         int scale = digits + 5;         BigDecimal arctan1_5 = arctan(5, scale);         BigDecimal arctan1_239 = arctan(239, scale);         BigDecimal pi = arctan1_5.multiply(FOUR).subtract(                                   arctan1_239).multiply(FOUR);         return pi.setScale(digits,                            BigDecimal.ROUND_HALF_UP);     }     /**      * Compute the value, in radians, of the arctangent of      * the inverse of the supplied integer to the specified      * number of digits after the decimal point. * / Public static BigDecimal computePi (int cifre) (int scala = + 5 cifre; BigDecimal arctan1_5 = arctan (5, scala); BigDecimal arctan1_239 = arctan (239, scala); BigDecimal pi = arctan1_5.multiply (quattro). Sottrarre ( arctan1_239). moltiplicare (quattro); ritorno pi.setScale (cifre, BigDecimal.ROUND_HALF_UP);) / ** * Calcola il valore, in radianti, del Arcotangente di * l'inverso della fornite a intero * specificato il numero di cifre dopo la virgola. The value      * is computed using the power series expansion for the      * arc tangent:      *      * arctan(x) = x - (x^3)/3 + (x^5)/5 - (x^7)/7 +      *     (x^9)/9 ... * Il valore è calcolato utilizzando la serie di potenze di espansione per l'arco tangente *: * * arctan (x) = x - (x ^ 3) / 3 + (x ^ 5) / 5 - (x ^ 7) / 7 + * (x ^ 9) / 9 ... */     public static BigDecimal arctan(int inverseX,                                     int scale)     {         BigDecimal result, numer, term;         BigDecimal invX = BigDecimal.valueOf(inverseX);         BigDecimal invX2 =             BigDecimal.valueOf(inverseX * inverseX);          numer = BigDecimal.ONE.divide(invX,                                       scale, roundingMode);          result = numer;         int i = 1;         do {             numer =                 numer.divide(invX2, scale, roundingMode);             int denom = 2 * i + 1;             term =                 numer.divide(BigDecimal.valueOf(denom),                              scale, roundingMode);             if ((i % 2) != 0) {                 result = result.subtract(term);             } else {                 result = result.add(term);             }             i++;         } while (term.compareTo(BigDecimal.ZERO) != 0);         return result;     } } * / Public static BigDecimal arctan (int inverseX, int scala) (BigDecimal risultato, numero, termine; BigDecimal invX = BigDecimal.valueOf (inverseX); BigDecimal invX2 = BigDecimal.valueOf (inverseX * inverseX); numero = BigDecimal.ONE.divide (invX, scala, roundingMode); risultato = numero; int i = 1; do (numero = numer.divide (invX2, scala, roundingMode); int DENOM = 2 * i + 1; termine = numer.divide (BigDecimal.valueOf (DENOM), scala, roundingMode); if ((i% 2)! = 0) (risultato = result.subtract (termine);) else (risultato = result.add (termine);) i + +;) while (term. compareTo (BigDecimal.ZERO)! = 0); return result;)) 

Note: The code has been adapted from a java.sun example. Nota: Il codice è stato adattato da un java.sun esempio.