亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

關于java中強制轉換為題

關于java中強制轉換為題

掌門飛哥 2016-10-25 15:06:11
double?a=1; double?b=2; double?c=3; double?result?=?a*b+c/2+2*(a+b)/c; System.out.println("result="+result);為什么輸出結果為5.5,沒有報錯在java虛擬機中,都是默認結果為int,我這里是double,按說應該報錯的,高的到低的轉換,但是沒有保存,求大神指點,謝謝了!
查看完整描述

3 回答

?
JjayG

TA貢獻27條經驗 獲得超6個贊

1*2 + 3/2 +2*(1+2)/3

2 + 1.5 + 2 = 5.5

你的result定義的是double型的,計算中出現了小數,那么結果就會使double型的呀。。。所以5.5也沒錯吧?

困惑的點沒有get到

查看完整回答
反對 回復 2016-10-26
  • 掌門飛哥
    掌門飛哥
    我的意思是,我現在的類型是double,java虛擬機中輸出的一般都是int型別,所以,應該需要強制轉換的,double 型表示的值范圍要比 int 表示的值范圍大,且從 double 值轉換到 int 值,會進行四舍五入,從而有精度損失。所以,按說應該會報錯,為什么呢!謝謝了?。?!
?
JustWannaHugU

TA貢獻452條經驗 獲得超796個贊

? ? ? ??double?result?=?a*b+c/2+2*(a+b)/c;

a,b,c都是double類型

結果也正確啊,還有是表數范圍小的自動向表數范圍大的轉換你記錯了

查看完整回答
反對 回復 2016-10-25
  • 掌門飛哥
    掌門飛哥
    ,我的意思是,我現在的類型是double,java虛擬機中輸出的一般都是int型別,所以,應該需要強制轉換的,double 型表示的值范圍要比 int 表示的值范圍大,且從 double 值轉換到 int 值,會進行四舍五入,從而有精度損失。所以,按說應該會報錯,為什么呢!謝謝了!?。?/div>
  • JustWannaHugU
    JustWannaHugU
    jvm中不是最終都轉換為int類型。我還真不了解,等別人回答吧!
  • 掌門飛哥
    掌門飛哥
    還是要謝謝你!
點擊展開后面1
  • 3 回答
  • 1 關注
  • 1561 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號