繁体   English   中英

(Java) 为什么我的代码没有打印出完整的数字?

[英](Java) Why is my code not printing out the full number?

我正在尝试使用以下 Java 代码计算 e 的值:

import java.util.Scanner;

public class Test {
    public static void main(String[] args) {
        Scanner scnr = new Scanner(System.in);
        
        int n;
        
        System.out.print("number of values: ");
        n = scnr.nextInt();
        
        double e = 0.0;
        double f = 1.0;
        for (int i = 1; i <= n; i++) {
            f = f * (i);
            e += 1 / f;
        }
        e += 1;
        System.out.print(e);
    }
}

但是,当我打印出 e 时,它​​限制为 2.7182818284590455 而不是更具体的数字(2.7182818284590455 x 10^-308 或类似的数字)。 我使用的类型有问题吗?

这个答案

double 中的小数位数是16


我看不出你期望如何获得2.7182818284590455 x 10^-308

0.000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000027182818284590455

那是很小的一部分!

您正在做的是向e添加越来越小的分数。 根据您的代码,您只能期望结果介于2.03.0之间。


您可能正在寻找超过 16 位小数的精度 由于精度限制,使用double根本无法实现。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM