int i = 10.0/5 這個編譯報錯,因為10.0是double型別;改為這樣是可以的:int i = (int)10.0/5編譯可以通過。
我的問題:為什么如下也可以編譯通過呢?
int i = (int)(10.0/5),我認為在計算時10.0/5還是有問題,10.0屬于double型別要單獨強轉一下,但為什么是可以的?編譯沒有問題,輸出結果也是正確的
謝謝
uj5u.com熱心網友回復:
duoble型別除以5后是duoble型別,而接收值是一個int型別,這樣就報錯了。int i = (int)(10.0/5)這一步你講值轉型為int型別,就不報錯了。這樣轉型結果會丟失小數后面的值好像uj5u.com熱心網友回復:
小型別轉換為大型別為隱式轉換,可以自動轉,而大型別轉為小型別則需要指定轉換型別,否則無法接收。int i = (int)(10.0/5),運算結果為double,接收型別為int,則需要將型別強制轉換,否則型別無法接收。而你疑惑的運算中屬于小轉大,不需要顯示指定。uj5u.com熱心網友回復:
它運算的結果是double 是2.0uj5u.com熱心網友回復:
謝謝回復的各位uj5u.com熱心網友回復:
強裝,顯示說明就可以了uj5u.com熱心網友回復:
上面我問我想在追問一下:10.0/5:這種形式是double型除以整數型,這本身是可以的嗎?當然結果是double型,這種數字不同型別的運算有什么規則?
必須int I = 1 +2 我們知道1和2是int型別是可以的,那10.0/5中10.0寫成浮點型的樣子默認為double型,那為什么不是int型了呢?雖然他長得像double型
感謝
uj5u.com熱心網友回復:
運算型別不同,先轉為相同型別再運算。轉換時按照精度低到精度高轉換,所以結果為duobleuj5u.com熱心網友回復:
明白了,謝謝大家uj5u.com熱心網友回復:
賦值陳述句的左值和右值型別要一致。uj5u.com熱心網友回復:
我也明白了⊙ω⊙uj5u.com熱心網友回復:
賦值陳述句左邊的復制型別的范圍需要大于等于右邊的賦值型別范圍,這樣可以發生自動型別轉換。如果左邊的復制型別的范圍需要小于等于右邊的賦值型別范圍,需要使用強轉轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/20892.html
標籤:Java SE
上一篇:Spring手動回滾事務,在捕獲的例外中記錄錯誤日志
下一篇:JAVA 包
