第04部分:浮點數(shù)類型

在Java中,實數(shù)使用float和double數(shù)據(jù)類型表示。float類型是32位單精度浮點數(shù),double類型是64位雙精度浮點數(shù)。這兩種類型都符合IEEE 754-1985標(biāo)準(zhǔn)。這個標(biāo)準(zhǔn)規(guī)定了浮點數(shù)的格式和運算方式。


浮點數(shù)可以以字面量的形式寫在Java程序中,其格式為一些可選數(shù)字,后面跟一個小數(shù)點和一些數(shù)字,例如:

123.45

0.0

.01


浮點數(shù)字面量還可以使用指數(shù)形式(科學(xué)計數(shù)法)表示。其格式為一個數(shù)后面跟著字母e或者E和一個數(shù),第二個數(shù)表示10的次方,是第一個數(shù)的乘數(shù)。例如:

1.2345E02? ? ?// 1.2345 * 10^2或123.45

1e-6? ? ? // 1 * 10^-6或0.000001

6.02e23? ? ?//阿伏加德羅常數(shù):6.02 * 10^23


默認(rèn)情況下,浮點數(shù)都是double類型,若想在程序中使用float類型,要在數(shù)字后面加上f或者F,例如:

double d = 6.02E23;

float f = 6.02e23f;

浮點數(shù)字字面量不能使用十六進(jìn)制,二進(jìn)制或者八進(jìn)制表示。



浮點數(shù)表示的值

由于本質(zhì)上的限制,大多數(shù)實數(shù)都不能使用有限的位數(shù)進(jìn)行精確表示,因此要記住,float和double類型都只能表示實際值的近似值。float類型是32位近似值,至少有6個有效數(shù)字,double是64位近似值,至少有15個有效數(shù)字。


除了表示普通的數(shù)字之外,float和double還能表示四個特殊的值:正無窮大,負(fù)無窮大,零和NaN。如果浮點數(shù)運算的結(jié)果超出了float或double能表示的范圍上線得到的是無窮大。如果浮點數(shù)的運算結(jié)果超出了float或double能表示的范圍下限,得到的是零。


Java的浮點類型區(qū)分正零和負(fù)零,具體是哪個值取決于從哪個方向出現(xiàn)的下溢,在實際使用中,正零和負(fù)零的表現(xiàn)基本一樣。最后一種特殊的浮點數(shù)NaN,是“Not-a-Number”的簡稱,表示“不是數(shù)字”。如果浮點數(shù)運算不合法,例如0.0/0.0,得到的就是NaN,例如:

double inf = 1.0/0.0;? ? ?// 無窮大

double neginf = -1.0/0.0;? ??// 負(fù)無窮大

double negzero = -1.0/inf;? ??// 負(fù)零

double NaN = 0.0/0.0;? ?// NaN


Java浮點數(shù)類型能處理到無窮大的上溢以及到零的下溢,因此浮點數(shù)運算從不拋出異常,就算執(zhí)行非法運算也沒事,例如零除以零,或者計算負(fù)數(shù)的平方根。


float和double基本類型都有對應(yīng)的包裝類,分別為Float和Double。這兩個類都定義了一些有用的常量,如:MIN_VALUE、MAX_VALUE、NEGATIVE_INFINITY、POSITIVE_INFINITY 和 NaN。


無窮大浮點數(shù)的表現(xiàn)和設(shè)想的一樣,例如,無窮大之間的加減運算得到的還是無窮大,負(fù)零的表現(xiàn)幾乎和正零一樣。而且實際上,相當(dāng)判斷運算符==會告訴你,負(fù)零和正零是相等的,區(qū)分正零和負(fù)零還有普通的零有一種方法,把它作為被除數(shù):1.0/0.0得到的是正無窮大,但是1.0/負(fù)零得到的是負(fù)無窮大。因為NaN不是數(shù)字,所以==運算符會告訴我們它不等于任何其它數(shù)字,甚至包括它自己,若是想檢查某個float或者double值是否為NaN,必須使用 Float.isNaN() 或 Double.isNaN() 方法。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容