当我写作例如:
double d = (4/3)*6;
为什么它将4/3视为1(int?)而不是1.333,结果是6而不是8?
感谢。
答案 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
。