Tas*_*sos 29 java double int comparison primitive-types
Utilities.getDistance(uni, enemyuni) <= uni.getAttackRange()
Run Code Online (Sandbox Code Playgroud)
Utilities.getDistance返回double,getAttackRange返回int.上面的代码是if语句的一部分,它必须是true.那么比较有效吗?
谢谢
Jon*_*eet 64
是的,它是有效的 - 它会在执行比较之前将其提升int为a double.
参见JLS第15.20.1节(数值比较运算符),它链接到JLS第5.6.2节(二进制数字促销).
从后者:
应用扩展基元转换(第5.1.2节)来转换由以下规则指定的一个或两个操作数:
如果任一操作数的类型为double,则另一个操作数转换为double.
...
当使用两种不同的数字类型执行操作(包括比较)时,Java将执行隐式扩展转换.这意味着,当你比较一个double带有int时,int被转换为double使Java可以再比较值作为两个double秒.所以简短的回答是肯定的,比较一个int和一个double是有效的,但需要注意.
问题是,你不应该使用比较平等两个浮动-PIONT值==,<=或>=因为精度可能出现的错误的运营商.另外,你需要要小心这双可以采取特殊值:NaN,POSITIVE_INFINITY,和NEGATIVE_INFINITY.我强烈建议你做一些研究,并在比较doubles 时了解这些问题.
| 归档时间: |
|
| 查看次数: |
52901 次 |
| 最近记录: |