[英](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.0
和3.0
之間。
您可能正在尋找超過 16 位小數的精度。 由於精度限制,使用double
根本無法實現。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.