public static void shuijishu(){ int numRandomNumbers = 30000; Random random = new Random(); BigInteger[] randomNumbers = new BigInteger[numRandomNumbers]; // Generate random numbers with BigInteger for (int i = 0; i < numRandomNumbers; i++) { randomNumbers[i] = BigInteger.probablePrime(50, random); // Generate a 50-bit prime number with high probability } // Calculate the product of the random numbers BigInteger product = BigInteger.ONE; for (BigInteger number : randomNumbers) { product = product.multiply(number); } // Calculate the geometric mean of the random numbers double geometricMean = Math.pow(product.doubleValue(), 1.0 / numRandomNumbers); System.out.println("The geometric mean of the random numbers is: " + geometricMean); } 这段代码最终计算结果显示为: Infinity 有什么整改建议吗
时间: 2024-04-05 07:31:46 浏览: 43
Java大数字运算之BigInteger <font color=red>原创</font>
这段代码中出现了一个问题,即当BigInteger类型的数值太大时,其doubleValue()方法会返回Infinity。在这段代码中,生成的随机数非常大,导致了这个问题的出现。为了避免这个问题,可以使用BigDecimal类型来代替BigInteger类型进行计算,因为BigDecimal类型可以保留更多位的小数,避免了doubleValue()方法返回Infinity的问题。同时,也可以考虑使用更高效的算法来计算随机数的乘积,以避免计算过程中出现过大的数值。
阅读全文