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

时间:2016-03-04 14:36:03

标签: java casting

这个问题要求我编写一个Java程序来显示以下转换运算符表达式的结果:

(双)(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之间的区别是什么?我们如何知道何时使用这些原始数据类型?我在这里阅读了一个解释:https://docs.oracle.com/javase/tutorial/java/nutsandbolts/datatypes.html 但是有没有“人类版本”的解释?

感谢您的帮助。

4 个答案:

答案 0 :(得分:2)

问题是由于使用的类型。

由于您将两个整数(23和14)分开,因此也会考虑结果和int。因此,23/14 = 1.642857142857143,其被截断以适合int结果,更具体地,1。 结果是1(int)和7.65(double)的总和。由于其中一个是双重的,其他的转换为"鞋帮"类型也是(双),操作变为1.0 + 7.65 = 8.65。

结果是正确的,因为您询问了(double)(23/14)+ 7.65的结果,这意味着将括号中的操作结果转换为与7.65加倍的结果。如前所述,这是8.65。

如果您想使用双打分区,请考虑:

double r1 = 1.0 * 23/14;

答案 1 :(得分:1)

让我们一步一步看:

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

答案 2 :(得分:1)

好吧,int是INTEGER的短期内容,它们是我们正常使用的自然数字,但没有小数位,如果你的数字有大约-2亿到+20亿之间的值。如果你的范围超过了这个范围,你仍然需要一个整数,那么就选择长数据类型。

浮点数是像3.147这样的十进制值,范围是+ 10 * 38到-10 * 38左右,但是如果你的范围超过这个(实际上很少发生这种情况),请选择加倍。

来到你放在这里的代码,如果你把一个int除以另一个int(比如23/14),你只得到答案的整数部分(23/14中只有'1'= 1.642 ...) ,接下来当你把它加倍你得到1.0然后你将把它加到7.65这将得到最终答案8.65希望这能回答你的Q ....

答案 3 :(得分:0)

您可以更改此int num = 23/14

double num = ((double) 23)/14

double num = (23 * 1.0)/14