今天突然有人问我这道题, 我卡住了..
比如说,
x > 10 ? 99.9 : 9
如果条件为否, 会返回什么?
结果会返回9.0
我当时是这么回答他的:
以二元运算符为例, 如果参考两边参数计算的数值如果精度不同的话,
低精度数值会转换为高精度后再计算.
比如说99.9 * 9, 会转换成99.9 * 9.0
而? :的逻辑结果等同于if else, 但他们的处理方式却并不一样,
? :是一个三元运算符, 只要是运算符, 那么参与的数值就需要进行精度转换.
这也就是为什么会返回9.0的原因了.
当时回答他的时候我觉得没啥问题.
但后来一细想, 如果我的说法成立的话,
那么 x > 10.0 ? 99 : 9是不是就是返回99.0或是9.0了?
但实际结果并不是我想的那样...
在google和baidu上搜了一下三元运算符,
基本上都只是说说这玩意的概念而已, 没有提及到这精度转换的,
所以只能在这儿求 助诸高手解释一下.
先谢了.
javaeye来的不多, 不知道这个问题该发到哪个版块, 问题标签也不知道该如何定义..
只能发到我感觉应该是的地方了..
如果发错地方了, 还麻烦版主帮我移一下贴子.