gpt4 book ai didi

java - 以 sig 数字精度计算 PI,无需舍入

转载 作者:行者123 更新时间:2023-12-02 12:17:39 27 4
gpt4 key购买 nike

我必须使用莱宾茨级数计算 Pi

pi/4 = 1 - 1/3 + 1/5 - 1/7 ...

我需要达到六位有效数字精度所需的迭代次数,最初java有小数点以外的15位数字,但我只需要5(3.14159)精度,而且我无法四舍五入,我如何检查sig数字精度如果java要给我小数点后9位数字,那么不进行四舍五入并且不使用Math,round函数?

public class Main {

public static void main(String[] args) {

double series = 0;
double denominator = 1;
double numerator = 1;
double testingPi;
double formattedTestingPi = 0;
double formattedMathPi = Math.round(Math.PI * 100000.0) / 100000.0;
int max = 1200000;
int iterations = 0;
double formattedPreviousPi = 0;
double formattedDelta = 0;

for(int i = 1; i < max;i++)
{

iterations = i;

if((i % 2) != 0)
{
series = series + (numerator/denominator);
}
else if((i % 2) == 0)
{
series = series + ((numerator/denominator) * -1);
}

testingPi = series * 4;

formattedTestingPi = (Math.round(testingPi * 100000.0))/100000.0;

formattedDelta = formattedTestingPi - formattedPreviousPi;

if(Math.abs(formattedDelta) <= 0.000009)
{
i = max;
}

formattedPreviousPi = formattedTestingPi;
denominator = denominator + 2;
}

System.out.println("Formatted Delta :" + formattedDelta);
System.out.println("Iterations :" + iterations);
System.out.println("Pi Formatted Computed :" + formattedTestingPi);
System.out.println("Pi Formatted Math Library :" + formattedMathPi);
}
}

输出为

格式化的增量:0.0

迭代次数:426183

Pi 格式计算:3.14159

Pi 格式的数学库:3.14159

我不需要解决方案,但需要一些关于如何在不四舍五入的情况下完成此操作的帮助。

最佳答案

How would I check sig figure precision without rounding tho and without using the Math,round function if java is gonna give me 9 digits beyond the decimal place?

一个简单的方法是检查其两侧是否在 0.000005 以内(或您想要的任何其他精度):

if ((n >= 3.141585) && (n < 3.141595))

关于java - 以 sig 数字精度计算 PI,无需舍入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46044461/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com