只有我常常發現自己寫的東西,如:數學計算與混合型
int part = 7;
int whole = 10;
...
int percentage = (int) (100.0 * (double) part/ (double) whole);
有減少到最低限度鑄件的數量(不實際修改原始類型的變量的方式... )?
只有我常常發現自己寫的東西,如:數學計算與混合型
int part = 7;
int whole = 10;
...
int percentage = (int) (100.0 * (double) part/ (double) whole);
有減少到最低限度鑄件的數量(不實際修改原始類型的變量的方式... )?
代碼有問題等同於:
int percentage = (int) (100.0 * part/ whole);
雙參數付出雙倍的結果,算術運算所以part
和whole
自動轉換爲double
你並不需要轉換,這將是在你的操作中自動鑄造100.0*part/whole
給你一個雙倍數值,只投一次整數,這將是最終值
int percentage = (int) (100.0 * part/ whole);
有問題的代碼等價於:
int percentage = 100 * part/whole;
沒有浮點運算任何得益於雙鑄造轉換如何int和整數除法的工作。 (如果最後拋出小數部分,爲什麼還要計算它。)
嚴格地說,'part/whole'將返回一個整數值。儘管100.0 * part/whole'會返回一個double值(Java會自動將部分和整體轉換爲double,因爲100.0是double) – RudolphEst 2013-02-28 12:47:30
是的,我想我在我的答案中錯過了100.0,更新了,謝謝注意 – nsgulliver 2013-02-28 12:48:55