System.out.println(10 / 3.0); 這行代碼輸出的是3.3333333333333335我知道有兩個(gè)知識(shí)點(diǎn):1.整數(shù)和小數(shù)進(jìn)行運(yùn)算的時(shí)候,整數(shù)的類型自動(dòng)提升為double類型,兩個(gè)double類型進(jìn)行相除運(yùn)算,結(jié)果得到小數(shù)(也就是3.3333333333333335),即10先自動(dòng)提升為double類型,再和3.0進(jìn)行除法運(yùn)算2./獲取的是除法操作的商,%獲取的是除法操作的余數(shù)而我的問(wèn)題是:這行代碼怎么算到是3.3333333333333335?不知道這么想對(duì)不對(duì):按照我們平時(shí)的計(jì)算法則,10除以3的商是3,余數(shù)是1,但是10變成double和同樣是double類型的3.0進(jìn)行除法運(yùn)算就涉及到二進(jìn)制除法了,先把double這個(gè)8字節(jié)的數(shù)據(jù)類型展開(kāi)成32個(gè)二進(jìn)制位,然后進(jìn)行二進(jìn)制的除法計(jì)算得到補(bǔ)碼,然后補(bǔ)碼倒推出源碼,把商提取出來(lái)
1 回答

慕娘9325324
TA貢獻(xiàn)1783條經(jīng)驗(yàn) 獲得超4個(gè)贊
浮點(diǎn)數(shù)運(yùn)算有些時(shí)候回丟失經(jīng)度,最好Math.Round下保留二位小數(shù)
js是number.toFixed(保留的小數(shù)位)
添加回答
舉報(bào)
0/150
提交
取消