首页 > 代码库 > 又一次遇到+=操作的隐藏转型问题。
又一次遇到+=操作的隐藏转型问题。
隐藏转型的问题,对于简单的例子,大家都已经知道:
short i=1,j=1;
short k = i+j ;//编译错误,需要手工转型 。
但是 i++是可以的。这里就涉及隐藏转型的问题。
今天优化代码,原来的double用float,有一处没有修改,竟然能正确编译:
float sum = 0;
float[] location = point.getLocation();
if ( location == null || mDescriptor == null ) return Float.MAX_VALUE;
for ( int i = 0; i < mDescriptor.length; i++ ){
double diff = mDescriptor[i] - location[i];
sum += diff*diff;
}
return sum;
double的diff的积可以直接给float的sum进行+=操作。
询问了好久,终于查到了http://stackoverflow.com/questions/8710619/java-operator。
当然这段代码的diff最终是要修改为float的,只是在修改的中间过程发现这个现象。
又一次遇到+=操作的隐藏转型问题。
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。