私は最近、Math.BigDecimal で動作する基本的な Pi 電卓を作成しました。テキスト ファイルに出力し、非常に高速に計算しますが、BigDecimal でも限界があります。さらに正確な数値の場合、基本的なコードはどうなるのだろうと思っていました(実際にそれを必要とするコードはありません)。パイコードは次のとおりです。
package mainPack;
import java.io.IOException;
import java.math.BigDecimal;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.Scanner;
public class Main {
public static BigDecimal piDigCalc(int i){
double o = (double)i;
BigDecimal ret = new BigDecimal((1/(Math.pow(16.0D, o))*((4/((8*o) + 1))-(2/((8*o) + 4))-(1/((8*o) + 5))-(1/((8*o)+6))))); //Just the code for a hexdigit of Pi.
return ret;
}
public static void main(String[] args) throws IOException {
System.out.println("Enter accuracy:");
Scanner s = new Scanner(System.in);
int acc = s.nextInt();
s.close();
BigDecimal Pi = new BigDecimal(0);
for(int i = 0; i < acc; i++){
Pi = Pi.add(piDigCalc(i));
}
Path file = Paths.get("C:\\tmp\\PI.txt");
String pi = "" + Pi;
Files.write(file, pi.getBytes());
System.out.println("File has been saved at "+ file.toString());
}
}