Double.MAX_VALUE - 1.0
和Double.MAX_VALUE
一样大
神奇之处:我对Double.MAX_VALUE - 1.0
和Double.MAX_VALUE
进行比较,发现它俩的是相等的,按常理来说,应该不相等。
原因:double类型的数进行运算,首先需要对阶,double类型的最大值是1.7976931348623157 x \(10^{308}\),运算前数字1.0会先变成0.00000...[此处省略308个0]1 * \(10^{308}\) 再进行运算,但是double类型只能精确到小数点后16位,0.00000...[此处省略308个0]1 * \(10^308\) 后面的1精确不到,就相当于0,所以Double.MAX_VALUE - 1.0
和Double.MAX_VALUE
的值是相同的。
关于三目运算符
神奇之处:不使用三目运算的结果会报错,有人说:
左右两边必须是表达式,所以我测试了一下在:
左右两边调用方法,没报错。
原因:必须使用三目运算符返回的结果。