这个问题要求我编写一个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 但是有没有“人类版本”的解释?
感谢您的帮助。
答案 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)
浮点数是像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