2

好的,这就是我的想法,它通过四舍五入小数点后的数字不断产生稍微不准确的结果。我需要确切的值,而不是四舍五入的值!

因此,首先使用以下代码:

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),这在这种情况下非常重要!

4

3 回答 3

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;
于 2013-10-05T15:57:40.220 回答
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
于 2013-10-05T16:09:47.813 回答
0

请阅读 msdn 表格,它将帮助您了解真正的原因
参考:- http://msdn.microsoft.com/en-us/library/3b1ff23f.aspx

他们在里面已经说过

When you divide two integers, the result is always an integer

在此处输入图像描述


在这里,您将两个整数相除,因此结果也是 int。
你只需要输入其他人给出的所有内容,
就像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;
于 2013-10-05T17:47:10.917 回答