首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在java中比较双精度型和整型是否有效?

问在java中比较双精度型和整型是否有效?
EN

Stack Overflow用户
提问于 2012-11-09 04:25:19
回答 4查看 70.3K关注 0票数 35
代码语言:javascript
复制
Utilities.getDistance(uni, enemyuni) <= uni.getAttackRange()

Utilities.getDistance返回double,getAttackRange返回int。上面的代码是if语句的一部分,它需要为true。那么这种比较是有效的吗?

谢谢

EN

回答 4

Stack Overflow用户

发布于 2012-11-09 04:32:18

当执行两种不同数值类型的操作(包括比较)时,Java将执行隐式加宽转换。这意味着当您将double与int进行比较时,int将被转换为double,以便Java可以将这两个值作为两个double进行比较。因此,简短的答案是肯定的,比较int和double是有效的,但需要注意。

问题是,您不应该使用==、<=或>=运算符比较两个浮点值是否相等,因为可能会出现精度错误。此外,还需要注意double可以接受的特殊值:NaN、POSITIVE_INFINITY和NEGATIVE_INFINITY。我强烈建议您在比较double时做一些研究并了解这些问题。

票数 7
EN

Stack Overflow用户

发布于 2017-08-13 22:21:15

是的,它是绝对有效的比较int数据类型和双精度数据类型..

代码语言:javascript
复制
int i =10;
double j= 10.0;
 if (i==j)
{
System.out.println("IT IS TRUE");
}
票数 2
EN

Stack Overflow用户

发布于 2018-07-11 19:26:21

是的,它是有效的,并且您的代码应该可以正常工作,没有任何故障,但这不是最佳实践,像SonarQube这样的静态代码分析器将其显示为“主要”“错误”,

Major Bug img from sonarQube

Major Bug description from sonarQube

所以,正确的方法可以是,

代码语言:javascript
复制
Double.compare(val1,val2)==0 

如果任何参数不是浮点变量,它们将被提升为浮点数。

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

https://stackoverflow.com/questions/13297207

复制
相关文章

相似问题

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