上面是转换规则,你的三目操作符中有double类型的值,所以会转换成double类型比较,最后得到的结果是s1="90",s2="90.0",调用equals后自然不等了。
按照上述转换规则,int s3 = i<100?90:100.0; 返回的值是double类型的,赋值给int类型的s3可能损失精度,故报错。
有道理
第二个报错是因为你的90跟100.0类型不一致吧???如果一致,应该不报错。。。
你直接输出s1,s2不久知道了...
s1和s2的类型不一致,肯定返回false啊
类型不一致吧。所以会报错吧。