java 中 double a = 5/2; a = ? (多少)
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
前言
今天早上看到一个问题,说double a = 5/2; 运行后结果a是多少?double a = 5/2; 时 a = ?
先说结果:a = 2.0;double a =5/2;
System.out.println("a = " + a);
为什么呢?
在java中,两个int相除时,java会将两个int相除的结果强转成int,也就是将double转成int,在转的过程中,有几种取整的方式,有向下取整、向上取整、四舍五入取整、还有去尾法取整等方式。
-
Java默认是去尾法取整的,也就是直接将小数点后面的数字不要,有的语言默认选择的是向下取整
例如 (int)2.5 = 2; 或者是(int)-2.5 = -2,
回到题中,在java代码中,会把代码中等式的右边独立先算,5 和 2当成int类型处理做除法算数,得到2.5,再进行去尾法取整,得到的是2,再者因为等式的左边是double类型,转成后变成2.0;
double a = -5/2; 时 a = ?
根据我我们上面说过的java默认的时去尾法取整,所以我们就可以得知double a = -5/2; 时 a = -2.0