簡體   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