繁体   English   中英

从Java原始int转换为double

[英]Casting from Java primitive int to double

如果我打电话

methodName(5, 1/2);

它有签名

public static int methodName(int x, double y){
}

methodName接收值为00.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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM