Java 程序将 n 以内的整数的倒数相加

标签 java for-loop floating-point-precision

我尝试这样做,但每次运行它时我都会得到 1.0 作为答案。我无法找出问题所在,请帮助我。代码如下:

import java.util.Scanner;
public class Number23 {

public static void main(String[] args) {
    Scanner input = new Scanner(System.in);
    int n=0;
    float sum = 0,r = 0;

    System.out.print("Enter a number for n: ");
    n = input.nextInt();

    for(int x = 1; x <= n; x++)
    {
        r = (1/x);
        sum = sum + r;
    }

    System.out.print("The sum is "+sum);
 }

}

最佳答案

为了生成具有浮点值的倒数,声明 r 是不够的。一个float :您分配给它的表达式需要是 float以及。您可以使用 f 来完成此操作常量的后缀1除以 x :

r = (1f / x);

如果没有后缀,您的表达式表示整数除法,它会产生整数结果,并删除分数。在您的情况下,您获得非零值的唯一时间是 x 。等于1 .

关于Java 程序将 n 以内的整数的倒数相加,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25962529/

相关文章:

postgresql - 在 Postgres 中使用限制选择更新

javascript - 为什么 for 循环修改行(Javascript)中未引用的附加变量?

c - C 中的 float

c++ - 如何在C++中将变量四舍五入到小数点后n位

java - 如何通过 JPL 在 Java 应用程序内部运行的 Prolog 代码上使用 GUI 调试器?

java - 如何在java中解码数组中的十六进制代码

java飞行记录器连接错误

javascript "for (x in y)"语句

java - 在 Android Studio 中使用 Netbeans 的 JDK

c++ - 从什么数字开始,以下转换整数 -> double -> 整数无效?