最近看java基础,发现数值不一样的long和double类型的数据比较的结果居然会相同,请高手答疑!

public class LongToDouble {
public static void main(String[] args) {
long long1=1234567890123456789L;
double double1=1234567890123456788L;
System.out.println(long1==double1);
}
}

结果为:true

第1个回答  2017-12-08
自动类型提升,也就是说两个基础数据类型进行值对比的时候,类型不一样
低的会自动提升到高的数据类型,然后进行对比!
你可以做个实验,
int 10;
byte 10;
long 10;
double 10;
进行比对,你会发现全都是true!追问

您说的自动提升应该是原因所在,但是您举的例子并不恰当,我需要的是数值不同,结果却相同的例子。我测试后推断,应该是long类型和double类型进行比较的时候,long类型自动提升为double类型丢失了精度,导致相等。谢谢您的回答,让我醍醐灌顶,我还会继续查阅其他资料,学习之路,任重道远。谢谢!

本回答被提问者和网友采纳
第2个回答  2017-12-07
JVM不一样
相似回答