gpt4 book ai didi

java - 计算 y = 1/1 + 2/3 + 3/5 + 4/7 + ....... + n/(2n-1) 的值,其中 n 是用户输入

转载 作者:行者123 更新时间:2023-12-01 18:04:52 25 4
gpt4 key购买 nike

我的代码的问题是,当我输入 0 时,结果是 0.0 但每当我输入大于零的任何内容(例如 1,2,3,4,5,6, 998...任何内容)时,结果都是在每种情况下始终为 1.0。我在迭代中的逻辑是否不正确?

我的代码:

    /*/  Write a y program that will calculate the value of y if the expression 
of y is as follows (n is the input):

y = 1/1 + 2/3 + 3/5 + 4/7 + ....... + n/(2n-1) /*/

import static java.lang.System.*;
import java.util.*;

class Practice_Problems04_JavaPrograms_Task04{
public static void main(String[] args){
Scanner orcho = new Scanner(in);
out.println("Please enter the value of n: ");
int n = orcho.nextInt();
double y = 0;

for(int count = 1; count <= n; count++){
y += (count / ((2 * count) - 1));
}
out.println("The summation is, y = " + y);
orcho.close();
}
}

最佳答案

count / ((2 * count) - 1)是整数除法,需要 float 除法,改为count / ((2 * count) - 1.)

当两个整数进行除法运算时,则进行整数运算,a / b等于数学运算a/b删除小数部分。

1 / 2   -> 0.5  ->  0
3 / 2 -> 1.5 -> 1
-3 / 2 -> -1.5 -> -1
-3 / -2 -> 1.5 -> 1

事实上,(a / b) * b + (a % b)始终等于a .

要执行 float 除法,a 之一和b需要是 float ,可以使用隐式和显式转换。喜欢a * 1. / b(double)a / b

您可以查看java 8 specs对于 multiplicative operatorstype conversion .

The type of a multiplicative expression is the promoted type of its operands. If the promoted type is int or long, then integer arithmetic is performed. If the promoted type is float or double, then floating-point arithmetic is performed. 15.17

关于java - 计算 y = 1/1 + 2/3 + 3/5 + 4/7 + ....... + n/(2n-1) 的值,其中 n 是用户输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37361967/

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