好的,所以这是我的头脑,它通过舍入小数点后的数字产生一个稍微不准确的结果。我需要确切的价值,而不是圆润的价值!
首先,请使用以下代码:
int num1 = 10087;
int num2 = 9971;
int num3 = 9909;
int num4 = 9917;
int num5 = 9904;
double average = (num1 + num2 + num3 + num4 + num5) / 5;
double percentage = (10000 - average) / 100;
如果这个数学是在计算器上完成的,那么"百分比"是0.424。但如果它通过代码运行,则值将四舍五入为0.43,这是不准确的。我该如何阻止这种情况发生?
注意:请不要质疑10000号,我还需要结果正确的数字(0.424),这在这种情况下非常重要!
答案 0 :(得分:5)
将你的平均计算量提高到第一位
int num1 = 10087;
int num2 = 9971;
int num3 = 9909;
int num4 = 9917;
int num5 = 9904;
double average = (double)(num1 + num2 + num3 + num4 + num5) / 5;
double percentage = (10000 - average) / 100;
答案 1 :(得分:2)
只需在数字后添加“d”......
int num1 = 10087;
int num2 = 9971;
int num3 = 9909;
int num4 = 9917;
int num5 = 9904;
double average = (num1 + num2 + num3 + num4 + num5) / 5d;
double percentage = (10000 - average) / 100d;
d
告诉编译器使这些数字成为双精度浮点值而不是整数(你也可以只添加一个小数点)。没有“d”,数字是整数,计算机执行整数运算。这意味着
9 / 5 = 1 instead of 1.8
答案 2 :(得分:0)
请阅读msdn表格,它将帮助您了解真正的原因
参考: - http://msdn.microsoft.com/en-us/library/3b1ff23f.aspx
他们已经说过了
<强> When you divide two integers, the result is always an integer
强>
在这里你划分两个整数,所以它的结果也是int
你只需要像其他人给出的那样输入cast
正如 Ela 编写代码一样
int num1 = 10087;
int num2 = 9971;
int num3 = 9909;
int num4 = 9917;
int num5 = 9904;
double average = (double)(num1 + num2 + num3 + num4 + num5) / 5;
double percentage = (10000 - average) / 100;