在项目中遇到了一个小场景,就是对象A里面有一个Double类型的变量sal,但是功能里有个需求如果这个sal对应的值是整数,那么就展示整数的字符串,例如sal=5.0,那么最终展示的字符串应 为"5",并且sal始终不为null,由此我写下了如下的代码:
String a = String.valueOf(Math.ceil(sal)==sal ? sal.intValue() : sal);
我传入sal=6.0,那么上面的输出会是多少呢?可能会有人跟我想的一样不就是"6"吗,但是实际让我有点愕然,输出的居然是"6.0",我当时的第一感觉是: 啊???难道我前面的判断Math.ceil(sal)==sal 写的有问题吗,为false才会走到sal的逻辑,然后我开始了debug之旅, 发现前面的判断是true啊,那为什么会出现这个问题呢??后来我想到了三目运算是不是会把不同类型的对象向上造型成相同的父类,带着问题,搜了一下豆包果然
好家伙,看似简单的功能实际就会出现问题,对于知识的掌握可能还需要深入,以防出现类似的问题啊。