Я пытаюсь написать программу Java, которая находит сумму следующего ряда, используя вход для значения n:
Код, который я написал, выглядит следующим образом:
package sum_of_series1;
import java.util.Scanner;
public class Sum_of_series1
{
public static void main(String[] args)
{
Scanner sc = new Scanner (System.in);
int n, i;
double sum;
sum = 1;
System.out.println("Enter the value of n:");
n = sc.nextInt();
i = 0;
while (i<n)
{
i++;
sum = sum + ((double)(i/(i+1)));
}
System.out.println("The sum of the series is " + sum);
}
}
Однако вывод для каждого входа n выглядит следующим образом:
The sum of the series is 1.0
Ясно, что это неверно (например, n = 4). После некоторого осмотра я понял, что ((double)(i/(i+1)))
каждый раз вычисляется как 0.0
. Почему, например, 2/3
не вычисляется как 0.6666666666666666
и как решить эту проблему?
Однако странно, когда я пишу System.out.println((double) 2/3)
, выводится 0.6666666666666666
. Я довольно новичок в программировании и очень запутался. Любая помощь приветствуется!
i
является целым числом, и деление на целое число дает целое число. Так что1/2
это0
, например. Вам нужно преобразовать его в число с плавающей запятой или удвоить перед делением. - person Ted Klein Bergman   schedule 22.05.2021double
происходит после нанесения урона. - person Boris the Spider   schedule 22.05.2021