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

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

整數除法:如何產生雙倍?

整數除法:如何產生雙倍?

倚天杖 2019-05-30 11:13:28
整數除法:如何產生雙倍?對于此代碼塊:int num = 5;int denom = 7;double d = num / denom;價值d是0.0。它可以通過鑄造來強制工作:double d = ((double) num) / denom;但還有別的方法能讓你得到正確的答案嗎?double結果?我不喜歡鑄造原始人,誰知道會發生什么。
查看完整描述

4 回答

?
函數式編程

TA貢獻1807條經驗 獲得超9個贊

double num = 5;

這就避免了一個演員。但是你會發現轉換定義得很好。你不用猜,只要檢查一下JLS。INT到Double是一個擴大的轉換。從…第5.1.2節:

擴大原語轉換不會丟失有關數字值的總體大小的信息。

[...]

將int值或長值轉換為浮動值,或將長值轉換為雙倍值,可能會導致精度下降-也就是說,結果可能會丟失一些最不重要的值位。在這種情況下,產生的浮點值將是整數值的正確舍入版本,使用ieee 754圓到最近模式。(第4.2.4節).

5完全可以表示為雙。


查看完整回答
反對 回復 2019-05-30
?
茅侃侃

TA貢獻1842條經驗 獲得超22個贊

鑄造原語有什么問題?

如果你出于某種原因不想投,你可以

double d = num * 1.0 / denom;


查看完整回答
反對 回復 2019-05-30
?
ABOUTYOU

TA貢獻1812條經驗 獲得超5個贊

我不喜歡鑄造原始人,誰知道會發生什么。

為什么你不理性地害怕投原語?當你投一個int轉到double。如果您只是不確定它是如何工作的,請在Java語言規范。鑄造intdouble拓寬本原轉換.

您可以通過拋出分母而不是分子來消除額外的括號:

double d = num / (double) denom;


查看完整回答
反對 回復 2019-05-30
  • 4 回答
  • 0 關注
  • 901 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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