2012-04-03 76 views
6

我使用Math.round,發現它不會返回任何大於(2^32/2)-1的值,但文檔指出它可以/將返回長整型值,即2^64 ...下面有一個代碼片段。Math.round MAX可退還價值

long bTmp = (long)Math.round(4294967296L); 
System.out.println(bTmp); 
System.out.println(Long.MAX_VALUE); 

其輸出:

2147483647 
9223372036854775807 

我缺少的東西?

回答

11

它調用Math.round()的過載需要float並返回int。見 the javadoc

嘗試:

Math.round((double) 4294967296L) 
+2

我想補充的是什麼做的一些信息:http://docs.oracle.com/javase/specs/jls/se7/html/jls-5.html#jls- 5.1.2默認情況下,從長到寬都有擴大。爲了強制雙重行爲,它必須被鑄造。 – 2012-04-03 12:47:25