首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Java强制转换(强制转换运算符表达式)

Java强制转换(强制转换运算符表达式)
EN

Stack Overflow用户
提问于 2016-03-04 22:36:03
回答 4查看 689关注 0票数 0

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

(双倍) (23 / 14) + 7.65

我的代码:

代码语言:javascript
复制
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,但是这个解释有没有什么“人类版本”呢?

谢谢你的帮助。

EN

回答 4

Stack Overflow用户

发布于 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,正如前面所解释的。

如果要使用双精度除法,请考虑:

代码语言:javascript
复制
double r1 = 1.0 * 23/14;
票数 2
EN

Stack Overflow用户

发布于 2016-03-04 22:53:37

让我们一步一步来看:

代码语言:javascript
复制
int num =  23/14; // int division of 23/14 results in 1

所以,这里num =1

num强制转换为double时,r1的值将设置为1.0

代码语言:javascript
复制
double result = r1 + 7.65; //1.0 + 7.65 = 8.65
票数 1
EN

Stack Overflow用户

发布于 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……

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35798666

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档