Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/368.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java转换(转换运算符表达式)_Java_Casting - Fatal编程技术网

Java转换(转换运算符表达式)

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); } } 我认为我做得不对,我

这个问题需要我编写一个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);
  }
}
我认为我做得不对,我的代码有什么问题? 顺便问一下,有人能告诉我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