2013-05-21 25 views
-3

我正在學習有關基本類型的範圍,我有double類型的問題。範圍原始數字組成 - 雙

如果我們知道double有8個字節(64位) - 爲什麼不能確定最小和最大範圍double

long有8個字節很好,但我們能夠確定的最小值和最大值。

+0

Double.POSITIVE_INFINITY?還是Double.MAX_VALUE? –

+0

http://stackoverflow.com/questions/1650505/what-is-the-inclusive-range-of-float-and-double-in-java – Mat

+0

http://docs.oracle.com/javase/specs/jls /se7/html/jls-4.html#jls-4.2.3 – Mat

回答

0

雙存儲方式不存儲長整數或整數被存儲。

它存儲類似於科學記數法。

也就是說,一定數量的有效數字和一個冪。

編輯,上面的答案表明有一個最小值和最大值。然而,這是由於雙倍功率分量有多高的限制(即它只能佔用很多比特)。

+0

我認爲你對BigInteger等Big *類感到困惑。 – Woot4Moo

+0

即使使用宇宙中的所有原子,也必須有最大數量。 –

+0

請參閱:http://docs.oracle.com/javase/specs/jls/se7/html/jls-4.html#jls-4.2.3。我編輯了我的答案以反映您的意見。 –

1

很肯定這是最大值和最小值的範圍:

MAX_VALUE 的常量保持最大正的有限類型的雙值,(2-2 -52)·2 。

MIN_VALUE 一個常量,它包含double類型的最小正非零值,2 -1074

根據docs這兩個函數都返回一個原語double。

+0

這些步驟非常差。 –

+0

@huseyintugrulbuyukisik嗯? – Woot4Moo

+0

我的意思是當數值很大時,可以加/減的最小值也很大。 –

1

我不知道我們不會確定雙倍的最小和最大範圍。快速谷歌搜索顯示:

雙覆蓋範圍從4.94065645841246544e-324d到1.79769313486231570e + 308d(正值或負值)。

如果你在這個問題看,雖然,你可以找到更多的信息:What is the inclusive range of float and double in Java?