Java转换(转换运算符表达式)
这个问题需要我编写一个Java程序来显示以下cast运算符表达式的结果: (双倍)(23/14)+7.65 我的代码:Java转换(转换运算符表达式),java,casting,Java,Casting,这个问题需要我编写一个Java程序来显示以下cast运算符表达式的结果: (双倍)(23/14)+7.65 我的代码: public class op { public static void main(String [] args) { int num = 23/14; double r1 = (double) num; double result = r1 + 7.65; System.out.println("Results: "+ result); } } 我认为我做得不对,我
public class op {
public static void main(String [] args) {
int num = 23/14;
double r1 = (double) num;
double result = r1 + 7.65;
System.out.println("Results: "+ result);
}
}
我认为我做得不对,我的代码有什么问题?
顺便问一下,有人能告诉我long、double、int和float之间的区别吗?我们如何知道何时使用这些基本数据类型?我在这里读到一个解释:
但有没有“人性化”的解释
感谢您的帮助。让我们一步一步来看看:
int num = 23/14; // int division of 23/14 results in 1
这里num=1
当您将num
转换为double
时,r1
的值设置为1.0
double result = r1 + 7.65; //1.0 + 7.65 = 8.65
让我们看一步一步:
int num = 23/14; // int division of 23/14 results in 1
这里num=1
当您将num
转换为double
时,r1
的值设置为1.0
double result = r1 + 7.65; //1.0 + 7.65 = 8.65
好的,int是整数的缩写,它是我们通常使用的自然数,但没有小数点,如果你的数字的值大约在-20亿到+20亿之间。如果您的范围超过了这个范围,并且您仍然需要一个整数,那么选择长数据类型 浮点数用于小数点,如3.147,范围在+10*38到-10*38之间,但是如果你的范围超过了这个范围(实际上很少发生这种情况),就选择double
说到你放在这里的代码,如果你用一个整数除以另一个整数(比如23/14),你只能得到答案的整数部分(23/14中只有'1'=1.642…),下一步当你将它转换为双倍时,你得到1.0,下一步你将把它加到7.65,最终的答案是8.65希望这能回答你的问题…好的,int是整数的缩写,整数是我们通常使用的自然数,但没有小数点,如果你的数字的值大约在-20亿到+20亿之间。如果您的范围超过了这个范围,并且您仍然需要一个整数,那么选择长数据类型 浮点数用于小数点,如3.147,范围在+10*38到-10*38之间,但是如果你的范围超过了这个范围(实际上很少发生这种情况),就选择double
说到你放在这里的代码,如果你用一个整数除以另一个整数(比如23/14),你只能得到答案的整数部分(23/14中只有“1”=1.642…),下一步,当您将其转换为双倍时,您将得到1.0,下一步,您将把它添加到7.65,这将得到最终的答案,即8.65,希望这能回答您的问题……问题在于使用的类型 由于您将两个整数(23和14)相除,因此结果将被视为整数和整数。因此,23/14=1.642857142857143,它被截断以适合int结果,更具体地说,是1。 结果是1(整数)和7.65(双精度)之和。因为其中一个是双精度的,所以“到另一个”也转换为“上”类型(双精度),操作变为1.0+7.65=8.65 结果是正确的,因为您要求的是(double)(23/14)+7.65的结果,这意味着将括号中的运算结果转换为与7.65相加的两倍。如前所述,为8.65 如果要使用双精度除法,请考虑:
double r1 = 1.0 * 23/14;
问题是由使用的类型造成的 由于您将两个整数(23和14)相除,因此结果将被视为整数和整数。因此,23/14=1.642857142857143,它被截断以适合int结果,更具体地说,是1。 结果是1(整数)和7.65(双精度)之和。因为其中一个是双精度的,所以“到另一个”也转换为“上”类型(双精度),操作变为1.0+7.65=8.65 结果是正确的,因为您要求的是(double)(23/14)+7.65的结果,这意味着将括号中的运算结果转换为与7.65相加的两倍。如前所述,为8.65 如果要使用双精度除法,请考虑:
double r1 = 1.0 * 23/14;
您可以更改此
int num=23/14
到double num=((double)23)/14
或者
double num=(23*1.0)/14
您可以更改此int num=23/14
到double num=((double)23)/14
或者
double num=(23*1.0)/14
您的预期结果是什么?9.9298... 或者8.65?我想答案应该是9.9298。。。但是我的输出是8.65你的预期结果是什么?9.9298... 或者8.65?我想答案应该是9.9298。。。但是我的输出是8.65我想我知道了,谢谢!我想我明白了,谢谢!再次确认一下,结果应该是8.65,而不是9.2928….?这都是您对初始请求的解释。如果请求应该用java编写,那么结果应该是8.65,因为int除法是在强制转换之前完成的。如果它是用自然语言给出的,它可能将除法称为双精度,在这种情况下,结果应该是9.29…事实上,您可以这样做:double r1=23/14.0
请再次确保,因此结果应该是8.65,而不是9.2928…?这都是您对初始请求的解释方式。如果请求应该用java编写,那么结果应该是8.65,因为int除法是在强制转换之前完成的。如果它是用自然语言给出的,它可能将除法称为双精度除法,在这种情况下,结果应该是9.29…事实上,您可以这样做:double r1=23/14.0