[英]Casting from Java primitive int to double
如果我打電話
methodName(5, 1/2);
它有簽名
public static int methodName(int x, double y){
}
methodName
接收值為0
或0.5
y
?
int y = 1/2;
此時,y為0.如果您嘗試將其轉換為雙精度則為0.0。 它不記得它是如何獲得它的價值的,它的價值是什么。
編輯:我認為編譯器實際上會在編譯時將1/2
替換為0。 使代碼與int y = 0
完全相同
它將評估為0。
使用上面的代碼你可以做很多事情。
應該沒有具體的理由將y存儲為int。
試試這個:
double y = 1/2.0;
int y = 1/2;
在此代碼中,y將為0;
如果你想得到0.5
嘗試使用以下代碼:
double y = 1.0 * 1 /2; //y is 0.5
int y = 1/2
由於您使用1(int)和2(int)進行除法,因此它是整數除法,因此y = 0
(余數(%)為1)。
我認為你對參數(括號)感到困惑。 在java中,每個方法都有一組參數(它們可能不包含ex:exampleMethod())。
參數是傳遞給方法的變量,因此在代碼中調用時:
methodName() initialize it with methodName(x,y);
方法中的x和y只是指向通過參數的值的指針。 我建議您以不同的方式命名變量,以避免這種混淆。 例如:
int x;
int y;
methodName(int argX, double argY)
{
}
同樣為了回答你的問題,int在小數點處切斷了它的存儲值,所以5.9會舍入到5而不是6,所以如果你需要y的浮點變量,要么將它聲明為float或double,要么將工作,但java庫中的大多數方法都是為了將雙精度作為參數而不是浮點數
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.