本帖最后由 ⋛⋌⋚JEEP 于 2014-6-26 08:24 编辑
代码:int s = (int)4.342323543 ;System.out.println(s);输出结果返回4 比较正常
分析:数值默认是double类型,强转int类型,左右两边类型相同,结果返回int类型。
double s = (int)4.342323543 输出结果返回4.0
float s = (int)4.342323543 输出结果返回4.0
double s = (float)4.0000 输出结果返回4.0
问题一:上面形式的强转,编译通过,运行通过。分析原因:默认double类型后,又自动提升成double类型。(不知道理解的对不对?)对于结果都是4.0,只保留一位有效数值,求解释?
double s = (float)4.342323543 输出结果返回4.3423237800598145
double s = (float)4.0000 输出结果返回4.0
问题二:一样的编译通过,运行成功。强转成float类型精度变小,在自动提升回double类型,对于结果表示不理解,是补充丢失的精度吗,如果是,那么小数点后面是0的话,就不会补充了?求解释?
double s =(float)4.342323543;输出结果返回4.3423237800598145
double s =(float)4.34232354322222222;输出结果返回4.3423237800598145(同上)
double s =(float)4.342323543345;输出结果返回4.3423237800598145(同上)
问题三:后面小数有效位到了一定数量时,结果返回都一样,求解释? |