當我在程序中增加兩個'double'變量時,出現問題,我得到的結果爲零。爲什麼?乘以兩個雙變量的結果是零,爲什麼?
例如:
1.0E-321 * 5.321777473676208E-4 = 0.0
如何防止結果不爲零?
當我在程序中增加兩個'double'變量時,出現問題,我得到的結果爲零。爲什麼?乘以兩個雙變量的結果是零,爲什麼?
例如:
1.0E-321 * 5.321777473676208E-4 = 0.0
如何防止結果不爲零?
double
有一個minimum value。如果您嘗試存儲小於此數字的數字,則會得到underflow。可以使用BigDecimal
類。
BigDecimal a = new BigDecimal("1.0E-321");
BigDecimal b = new BigDecimal("5.321777473676208E-4");
System.out.println(a.multiply(b));
雙具有最大和微小按蚊值(某處大約-1.7 * 10^308),並且由於UR calulation具有近似於5.3 E325的結果它顯示了一個錯誤ü可以嘗試第一和然後multipying數字例如 1 * 5.32177的指數,然後簡單地添加冪(-321 +( - 4)),因此你可以得到你的答案。 :)
'double'具有[最小值](https://docs.oracle.com/javase/7/docs/api/java/lang/Double.html#MIN_VALUE)。如果您嘗試存儲小於此數字的數字,則會得到[下溢](https://en.wikipedia.org/wiki/Arithmetic_underflow)。 – khelwood
有沒有解決方法? –
使用'BigDecimal'。 – Kayaman