Isn的数据类型int仅用于整数吗? 10/3是小数,因此是小数。这是否意味着它会产生错误?
答案 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(整数,可直接赋值给整数变量)。正如其他人所指出的那样,这种划分的结果就像“圆到零”或“截断”操作一样。