private static BigDecimal pi(int n) { BigDecimal FOUR = BigDecimal.valueOf(4); BigDecimal ret = BigDecimal.valueOf(0); for (int i = 0; i < n; i++) { if (i % 2 == 0) { BigDecimal two=FOUR.multiply(BigDecimal.valueOf(1).divide( BigDecimal.valueOf(1).add(BigDecimal.valueOf(2).multiply(BigDecimal.valueOf(i))),200,BigDecimal.ROUND_HALF_UP)); //log.info(two.toString()); ret = ret.add(two); } else { BigDecimal one=FOUR.multiply(BigDecimal.valueOf(1).divide( BigDecimal.valueOf(1).add(BigDecimal.valueOf(2).multiply(BigDecimal.valueOf(i))),200,BigDecimal.ROUND_HALF_UP)); //log.info(one.toString()); ret =ret.subtract(one); } } log.info(ret.toString()); return ret; } private static BigDecimal e(int n) { BigDecimal ret = BigDecimal.valueOf(0); for (int i = 0; i < n; i++) { //log.info("i====="+ret.toString()); BigDecimal two=BigDecimal.valueOf(1).divide(mul(i),200,BigDecimal.ROUND_HALF_UP); //log.info(two.toString()); ret = ret.add(two); } log.info(ret.toString()); return ret; } private static BigDecimal mul(int i) { BigDecimal ret = BigDecimal.valueOf(1); if(i!=0) { for(int j=1;j<=i;j++) { ret = ret.multiply(BigDecimal.valueOf(j)); //log.info("j====="+ret.toString()); } } //log.info("!====="+ret.toString()); return ret; } public static void main(String[] args) { e(100); pi(100000000); }
2.71828182845904523536028747135266249775724709369995957496696762772407663035354759457138217852516642742746639193200305992181741359662904357290033429526059563072731008532378052751063686487016953141865524
3.14159264358979323846264363327950288419713814937510582098447584230781640087605274862803975903352331797554953915000106881512247009780224313238301330846111033806913254936842953056383625960215678384907924