好奇!!! 3*0.1=0.3 ?? 、((x>4) ? 99.9 : 9)的返回值是多少??

小二话不多说,以图为例。

1.    3*0.1==0.3

神奇吗?各位。

解析:因为有些浮点数不能完全精确的表示出来,如下代码:

System.out.println(3 * 0.1);

返回的结果是:0.30000000000000004。

2、 ((x>4) ? 99.9 : 9)

    int x = 4;
	System.out.println("value is " + ((x>4) ? 99.9 : 9));

返回值是啥???   是9吗???

哈哈,是9.0。

解析:三元表达式中,数据类型的变量与未定义变量的数值,结果自动转换为精度高的!!!!

        //规则1,定义了数据类型的变量与未定义变量的数值,结果自动转换为精度高的
  System.out.println(2==2?i:9.0); 
  //jvm给数值分配的数据类型,98并不是int类型的,而是byte/short,故结果会变为ASCII码98对应的字符
  System.out.println(2==2?98:a); 
  //规则2,两个已经定义数据类型的变量,结果自动转换为精度高的
  System.out.println(2==2?a:i);
  //规则3,两个未定义的数值,结果自动转换为精度高的
  System.out.println(2==2?99:9.0);
  System.out.println(2==2?99:'b');

  上述代码的执行结果为:  96.0
               b
               97
               99.0
               c

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值