尝试使用System.out.println()输出以下算式的值。

1 / 3
1.0 / 3
1 / 3.0
(double) 1 / 3

它们的答案各是什么?

当你在Java中进行整数除法时,Java将默认你希望得到整数结果,因而会把小数部分给完全舍去。但当把整数int和浮点数double混在一起进行计算时,Java则会以浮点数输出结果。如果希望把整数变成浮点数,需要用(double)进行类型转换(cast)的操作。相对的,可以用(int)将浮点数转换为整数。在这里cast的词义和用粘土塑造陶器(casting a pot in clay)是较为一致的。在Java中,变量类型兼容时可以使用类型转换将一种类型的变量转换成另一种。

1.0除以3的结果正确么?事实上,Java中的double最多能输出14至15位十进制小数。这是由每个double变量所占的内存bit位数有限而导致的自然结果。计算机进行的任何浮点运算在精度上都要受到类似限制。



0:00

True or false: Java rounds up automatically when you do integer division.

对于整数除法,Java并不进行四舍五入,而是仅保留结果的整数部分。回忆一下小学时学习的整除和余数吧。
2

True or false: casting always results in a double type.

变量类型转换将把变量转换为括号()内标示的类型,但如果两种类型本身不兼容,代码将无法被正确编译。
2

Which of the following returns the correct average when 3 values had been added to an integer total?

需要先把total和/或3转换为(double),Java才会正确进行浮点数除法。
3


陈 欣

AADPS创始人

发表评论