这个问题要求我编写一个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有什么区别吗?我们如何知道何时使用这些原始数据类型?我在这里读到了一个解释:https://docs.oracle.com/javase/tutorial/java/nutsandbolts/datatypes.html,但是这个解释有没有什么“人类版本”呢?
谢谢你的帮助。
发布于 2016-03-04 23:05:46
这个问题是由于使用的类型造成的。
由于您将两个整数(23和14)相除,因此结果也会被认为是int。因此,23/14 = 1.642857142857143,它被截断以适合整型结果,更具体地说,1.result是1(整型)和7.65 (双精度)的和。因为其中一个是双精度类型,所以to other也被转换为"upper“类型( double ),并且操作变成1.0+7.65 = 8.65。
结果是正确的,因为您要求的结果是( double ) (23 / 14) + 7.65,这意味着将括号中的运算结果转换为与7.65相加的结果。这是8.65,正如前面所解释的。
如果要使用双精度除法,请考虑:
double r1 = 1.0 * 23/14;发布于 2016-03-04 22:53:37
让我们一步一步来看:
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发布于 2016-03-04 22:59:02
好的,int是整数的短期术语,整数是我们通常使用的自然数,但没有小数点后,如果你的数字有大约-20亿到+20亿之间的值。如果你的范围超过了这个范围,而你仍然想要一个整数,那么就使用long数据类型。
浮点数是用于十进制值的,比如3.147,范围在+10*38到-10*38之间,但是如果你的范围超过了这个范围(实际上这种情况很少发生),就用双精度。
至于你放在这里的代码,如果你用一个整数除以另一个整数(如23/14),你只得到答案的整数部分(23/14中只有'1‘=1.642...),接下来当你将它转换为double时,你会得到1.0,接下来你将把它加到7.65,这将使最终答案成为8.65希望这能回答你的Q……
https://stackoverflow.com/questions/35798666
复制相似问题