用BigDecimal保留小数点后100位的精度都过不了,我特么服了。 import java.math.BigDecimal; import java.math.BigInteger; import java.util.*; public class Main { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); int n = scanner.nextInt(); if (n == 0) { System.out.printf("%.6f\n", 0.0d); } if (n >= 991) { System.out.printf("%.6f\n", 1.0d); } BigInteger up = new BigInteger("1"); BigInteger down = new BigInteger("1"); for (int i = 0; i < n; ++i) { up = up.multiply(new BigInteger("" + (990 - i))); down = down.multiply(new BigInteger("" + (1000 - i))); } BigDecimal upDecimal = new BigDecimal(up); BigDecimal downDecimal = new BigDecimal(down); upDecimal = upDecimal.divide(downDecimal, 100, BigDecimal.ROUND_DOWN); double result = upDecimal.doubleValue(); System.out.printf("%.6f\n", 1.0d - result); } }
点赞 1

相关推荐

牛客网
牛客企业服务