鍍金池/ 問(wèn)答/Java  網(wǎng)絡(luò)安全/ 為什么 short s = 1 不報(bào)錯(cuò)

為什么 short s = 1 不報(bào)錯(cuò)

1int 類型,為什么 short s = 1 不報(bào)錯(cuò),而 1.1double 類型 float f = 1.1 卻報(bào)錯(cuò)?

回答
編輯回答
絯孑氣

因?yàn)閕nt如果超了short范圍,會(huì)被截取低位部分,沒超會(huì)正常賦值.

但double類型是不可預(yù)測(cè)的,可能很簡(jiǎn)單的數(shù)字都占滿了所用的字節(jié),比如:0.5,在內(nèi)存中其實(shí)表示為:0.499999999999
這樣的數(shù)字截取低位部分就是另一個(gè)數(shù)字了,這顯然不能容許.所以float賦值小數(shù)必須加標(biāo)記,便于編輯器在編譯期間檢查.

2017年1月2日 14:09