我在一个Java应用程序中尝试这个简单的计算:
System.out.println("b=" + (1 - 7 / 10));
显然,我期望输出为b=0.3
,但实际上我得到的是b=1
。
什么?!这一切为什么要发生?
如果我写道:
System.out.println("b=" + (1 - 0.7));
我得到了正确的结果,即b=0.3
。
这里出了什么问题?
发布于 2010-05-26 08:30:43
你使用的是整数除法。
请尝试使用7.0/10
。
发布于 2010-05-26 08:33:35
您已经在表达式7/10中使用了整数,整数7除以整数10等于零。
你所期望的是浮点除法。以下任何一项都会以您预期的方式进行评估:
7.0 / 10
7 / 10.0
7.0 / 10.0
7 / (double) 10
发布于 2010-05-26 09:46:50
我发现字母标识符可读性更好,更能指示解析类型:
1 - 7f / 10
1 - 7 / 10f
或者:
1 - 7d / 10
1 - 7 / 10d
https://stackoverflow.com/questions/2909451
复制相似问题