算术运算有什么问题?

时间:2015-10-09 08:20:53

标签: java integer-arithmetic

当我写作例如:

double d = (4/3)*6; 

为什么它将4/3视为1(int?)而不是1.333,结果是6而不是8?

感谢。

3 个答案:

答案 0 :(得分:2)

4/3等于1,因为它使用整数除法划分两个整数。 4.0/3将为您提供您期望的结果,因为它将使用浮点除法。

答案 1 :(得分:0)

您正在计算整数isthmetic中的值并将结果赋值为double值,但结果仍然是整数。您可以强制浮点运算,方法是将第一个操作数设为double(或者如果它们是输入变量乘以1.0):

double d = (4.0/3)*6; 

如果值是输入:

int a = 4;
int b = 3;
int c = 6;

您可以通过乘以1.0强制转换:

double d = (a*1.0/b)*c; 

答案 2 :(得分:0)

因为没有规范的每个数字都是handelt整数。

如果你使用1.0,它将是双倍的。

对于其他格式,您可以使用1f表示浮点数,1l表示长整数或另一种方式表示双精度值1d