为什么“double z = 1/3”导致0.0?

时间:2014-09-29 06:58:57

标签: java floating-point division

我正在尝试学习java的有趣行为。请解释

    double z  = 1/3;
    System.out.println(z);

此程序返回0.0作为

    double z  = 1/3d;
    System.out.println(z);

此程序打印0.333333。有什么区别。

3 个答案:

答案 0 :(得分:2)

第一个是真正的整数除法。它将整数除以另一个整数(其结果又是一个整数),并将结果赋值给double变量。

只有第二个产生双倍的结果。

integer / integer => result is integer, even though assigned to a double variable
integer or double / double => result is double

答案 1 :(得分:2)

第一个示例将分割整数并将它们分配给你的双重" z",第二个将双重分成第一位

答案 2 :(得分:1)

Integer / Integer是一个整数,即使你将它赋给double类型的holder变量。要获得双精度值,你需要使用双变量进行算术运算