2014-05-25 13 views
4
public class Main { 

    public static void main(String[] args) { 

     long product = 1L; 
     product = (9 * 9 * 9 * 9 * 9 * 9 * 9 * 9 * 9 * 9 * 9 * 9 * 9); 
     System.out.println(product); 
     product = 9L; 
     for (int i = 0; i != 12; i++) { 
      product *= 9; 
     } 
     System.out.println(product); 

    } 
} 

輸出:-754810903
2541865828329 //這是正確的產品是Java在這兩個方法不同

+7

'(9 * 9 * 9 * 9 * 9 * 9 * 9 * 9 * 9 * 9 * 9 * 9 * 9)'被評估爲一個int並因此溢出。嘗試用'(9L * 9 * 9 * 9 * 9 * 9 * 9 * 9 * 9 * 9 * 9 * 9 * 9)' –

+1

這與'double result = 9/10' 0.鑄造到變量類型是發生的最後一件事 –

+0

@Pince如果其中一個答案幫助了你,你可以[接受它](http://stackoverflow.com/help/someone-answers)。 – assylias

回答

7

在你的第一次嘗試,你不確保結果是long。因此 - 它溢出爲int

product = (9L * 9 * 9 * 9 * 9 * 9 * 9 * 9 * 9 * 9 * 9 * 9 * 9); 
7

這是因爲int數據類型是不夠的,採取一切多,值。

將其轉換爲long

product = (9L * 9 * 9 * 9 * 9 * 9 * 9 * 9 * 9 * 9 * 9 * 9 * 9); 

或至少是先投。但請確保您獲得long數據類型值。否則它將無法工作,你永遠不會得到那樣的結果。你想要的:)

相關問題