int total = 201;
double Average = total / 7;
result should be 28.71428571428571.
我已尝试使用float,decimal和double作为平均值,但结果最终为28。
答案 0 :(得分:11)
你正在进行整数除法!
201/7
完全是不可或缺的,因此结果甚至不会触及浮点数,而是需要首先转换为双数:
double Average = (double)total / 7.0;
答案 1 :(得分:2)
它正在进行整数运算,因为total是一个int,而7是一个int。如果您将它们中的任何一个更改为十进制,您将获得您正在寻找的结果。
e.g。
int total = 201;
double Average = total / 7.0;
答案 2 :(得分:2)
您可以使用D
后缀隐式声明操作数是双精度型,例如:
201 / 7
28
201 / 7D
28.714285714285715
或者:
double Average = total / 7D;
答案 3 :(得分:1)
因为int除以int总是int。
试试这个:
double average = total / 7.0;
答案 4 :(得分:1)
total为int,7为int。整数除法的结果是int。它会被加速后加倍,但这并不重要,因为它已经被截断了。尝试:
double average = total / 7.0;
7.0是双字面值,int和double除法的结果是double。