Печать n десятичных цифр числа пи (Java) - PullRequest
0 голосов
/ 01 марта 2020

В настоящее время мои программы работают нормально - они могут выполнять простые требования задачи. однако, мои проблемы:

1) моя программа печатает пи в n-й ди git, а не пи в n-й десятичной дроби - поэтому я исправил эту проблему делая n = n + 2, потому что если n = 3 (по умолчанию), он печатает 3.1, а НЕ 3.141.

2) принимает только значения 0 <= n <= 15 </p>

3) неэффективно и мне не хватает неизвестных концепций, которые мне еще предстоит открыть (я не знаю, что искать)

package venture1

import java.util.Scanner;
import java.lang.Math;
import java.util.ArrayList; 

public class pi {

    public static void main(String args[]) {

        Scanner scan = new Scanner(System.in);
        int n = scan.nextInt();
        n += 2;  //the problem
        double pi = Math.PI;
        String sting = Double.toString(pi);
        char[] cA = sting.toCharArray();
        String start = "3."; //to concatenate to loop values
        String result = ""; //final print value

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

            char digit =cA[i];
            if (i == 1) {
                result = start;
            }
            else {
                result += digit;
            }
        }
        System.out.println(result);
        scan.close();
    }       
}

Ответы [ 3 ]

0 голосов
/ 01 марта 2020

Из кода, включенного в java учебник по числовому формату :

double pi = Math.PI;
System.out.format("%.3f%n", pi); // -->  "3.142"

Если вы хотите получить тот же результат для n цифр = 3, используйте класс DecimalFormat, это зависит от вас проверить количество цифр n:

double pi = Math.PI;
int n = 3;
DecimalFormat df = new DecimalFormat();
df.setMaximumFractionDigits(n);
System.out.println(df.format(pi)); // -->  "3.142"
0 голосов
/ 01 марта 2020

Используется BigDecimal. Это также охватывает вашу проблему +2. Надеюсь, Помогает! :)

public static void main(String args[]) {

    Scanner scan = new Scanner(System.in);
    int n = scan.nextInt();
    BigDecimal val22 = new BigDecimal(22);
    BigDecimal val7 = new BigDecimal(7);

    BigDecimal val = val22.divide(val7, n, RoundingMode.HALF_UP);
    System.out.println(val.doubleValue());
}
0 голосов
/ 01 марта 2020

Когда вы вводите 3, вы принимаете правильный ответ. (+ 2) кажется самым простым решением. Для второго вопроса Math.PI у меня есть 17 символов. Вот точное значение PI в java Математическом методе: 3.141592653589793. Из-за этого вы не можете вводить больше 15.

...