变量的价值是多少? int iNum = 10/3

时间:2014-07-26 22:59:45

标签: java types int double primitive-types

Isn的数据类型int仅用于整数吗? 10/3是小数,因此是小数。这是否意味着它会产生错误?

2 个答案:

答案 0 :(得分:2)

这取决于语言。对于您的示例(Java),它将舍入为零(也称为"截断"操作)。所以价值变成3.自己尝试一下:

int i = 10 / 3;
System.out.println(i); // Displays 3

int j  = -10 / 3;
System.out.println(j); // Displays -3

double k = 10 / 3;
System.out.println(k) // Displays 3.00

double m = ((double)10) / 3;
System.out.println(k) // Displays 3.33

double m = 10.0 / 3;
System.out.println(k) // Displays 3.33

每种情况下实际上都有两个操作。考虑第一个例子,

第1步: 计算右侧[Integer 10]除以[Integer 3]的值。答案为[Integer 3],如上所述。

第2步: 将此RHS值[Integer 3]分配给左侧。 [Integer 3]被分配到[Integer i]。所以我变得等于3。

因为操作分两步完成,所以使用double的第三个操作也给出了3.00,而不是3.33。步骤2开始时精度已经丢失。

答案 1 :(得分:1)

在代码中,10/3 分数。 Java没有原始分数。

相反,它是表示整数 10除以整数 3的表达式。由于这两种类型都不会导致将除法提升为浮点(即,两者都不是a float / double)然后使用整数除法,其结果也是整数

因此问题中没有浮点类型,结果为3(整数,可直接赋值给整数变量)。正如其他人所指出的那样,这种划分的结果就像“圆到零”或“截断”操作一样