Java求π并行实现,并求出小数点后一千位
时间: 2024-03-11 20:43:34 浏览: 57
Java实现的在圆周率中找到你的生日源代码,找出任意六位数字位于圆周率π后的位数,含圆周率小数点后一千四百多万位
在上述代码的基础上,我们可以使用BigDecimal类来精确计算π的值,并求出小数点后一千位,代码如下:
```java
import java.math.BigDecimal;
import java.util.concurrent.ThreadLocalRandom;
import java.util.stream.*;
public class PiParallel {
public static void main(String[] args) {
long numThrows = 100000000;
// 使用并行流生成随机点,并统计落在圆内的点数
long inCircle = LongStream.range(0, numThrows)
.parallel()
.filter(i -> {
double x = ThreadLocalRandom.current().nextDouble();
double y = ThreadLocalRandom.current().nextDouble();
return x * x + y * y <= 1;
})
.count();
// 计算 π 的值,并保留小数点后一千位
BigDecimal pi = BigDecimal.valueOf(4.0 * inCircle / numThrows)
.setScale(1000, BigDecimal.ROUND_HALF_UP);
System.out.println("π ≈ " + pi);
}
}
```
在上述代码中,使用了BigDecimal类来精确计算π的值,并利用setScale()方法设置小数点后的位数。需要注意的是,setScale()方法的第二个参数需传入BigDecimal.ROUND_HALF_UP,表示使用四舍五入的方式进行取舍。
阅读全文