在C#中,如果我想將double(1.71472)轉換爲int,那麼我將得到答案2.如果我使用intValue()方法在Java中執行此操作,我得到1作爲答案。將Double轉換爲Int時的不同答案 - Java與.Net
Java是否會降低轉換?
爲什麼在Java API文檔具有即
返回指定 數爲int值約爲其類,信息很少。這可能涉及到 四捨五入或截斷。
有關舍入的更多信息會有幫助!
在C#中,如果我想將double(1.71472)轉換爲int,那麼我將得到答案2.如果我使用intValue()方法在Java中執行此操作,我得到1作爲答案。將Double轉換爲Int時的不同答案 - Java與.Net
Java是否會降低轉換?
爲什麼在Java API文檔具有即
返回指定 數爲int值約爲其類,信息很少。這可能涉及到 四捨五入或截斷。
有關舍入的更多信息會有幫助!
當您使用轉換轉換時,Java從一個浮點型變爲一個整型時,向0調整爲零,並且C#也是如此。這是Convert.ToInt32
舍入:
double d = 1.71472;
int x = (int) d; // x = 1
int y = Convert.ToInt32(d); // y = 2
詳細信息可在Java Language Specification找到。需要注意的是,雖然在Number
引用文檔離開選項打開的子類,在具體的拳擊類型的文檔,如Double
,是明確的關於實施:
返回此Double的值作爲 INT(通過轉換成鍵入int)。
使用BigDecimal
時,可以指定八種不同的舍入策略之一。
Java從一個浮點到一個整數類型縮小時,趨近於零。
有關於Java Language Specification中的一般規則的更多文檔。注意,儘管在Number
文檔離開選項打開的子類,在具體的拳擊類型的文檔更清楚了:
返回此Double的值作爲 INT(通過強制轉換爲int類型)。
使用BigDecimal時,可以指定八種不同的舍入策略之一。
Jon Skeet是正確的,但要注意的是.NET使用Banker's Rounding作爲舍入算法。當你處於偶數整數之間的一半時。
事實上,它比這更糟糕。 .NET在大多數情況下使用銀行家舍入,但不是全部(格式字符串是使用常見舍入的一種情況)。您還可以更改.NET 2.0及更高版本中使用的舍入方法。 – 2008-11-18 23:39:36