请教高手一个问题,谢谢
public class Conditional{
public static void main(String args[ ]){
int x=4;
System.out.println(“value is “+ ((x>4) ? 99.9 :9));
}
}
请问这个程序的结果为什么是9.0,而不是9呢?
------解决方案--------------------=====以下是个人猜测============
取99.9,和9之间精度较大的输出。
相当于:
System.out.println(“value is “+ ((x>4) ? 99.9 :(double)9));
------解决方案--------------------/**
* 基本类型的自动提升
*
* 自动提升的规则如下:
*
* 如果两个操作数中有一个是double类型,则系统先将另一个操作数转换为double类型,然后运算,否则
* 如果两个操作数中有一个是float类型,则系统先将另一个操作数转换为float类型,然后运算,否则
* 如果两个操作数中有一个是long类型,则系统先将另一个操作数转换为long类型,然后运算,否则
* 所有的操作数都被转换为int类型进行运算(低于int类型的会自动提升)
*
* 如果采用"+=","*="等缩略形式的运算符,则系统会强制将运算结果转换为目标变量类型。
*
*/
看完这个应该可以明白的
------解决方案--------------------类型转换了,
int和float 转float;
float和double转double ;
------解决方案--------------------
------解决方案--------------------详细解答 见 传送门