无舍入sig图形精度计算pi

bpsygsoo  于 2021-07-03  发布在  Java
关注(0)|答案(1)|浏览(382)

我必须用leibinz级数计算π
pi/4=1-1/3+1/5-1/7。。。
我需要达到六位有效数字精度所需的迭代次数,原来java的小数点后有15位,但我只需要5(3.14159)的精度,我不能舍入,如果不舍入tho和不使用数学,我如何检查sig figure的精度,如果java给我的是小数点后9位的整数函数?

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
我不需要解决办法,但一些帮助,如何才能做到这一点,没有四舍五入。

uklbhaso

uklbhaso1#

如果java要给我小数点后的9位数字,我如何在不舍入tho和不使用数学舍入函数的情况下检查sig figure的精度?
一个简单的方法是检查它是否在任何一边的0.000005以内(或者任何你想要的精度):

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

相关问题