计算一个值并四舍五入到最接近的整数

时间:2011-11-21 14:53:50

标签: c# math variables double rounding

我正在尝试计算下面的数字。我应该像83.12454那样得到0。

我相信我想要一个Double变量类型。我下面做错了什么?一旦我得到了值,我需要修剪小数。

Ratings GetNoVotes = new Ratings();
int DATotalYesVotes = GetNoVotes.GetTotalNOVotes(1, yesPictureId); //80
int DaTNoVotes = GetNoVotes.GetTotalNOVotes(2, yesPictureId);      //15
int DaTotalVotes = DATotalYesVotes + DaTNoVotes;                   //95

double Percentage = (DATotalYesVotes / DaTotalVotes)*100;          //84.2105
// Math.Round(Percentage);
TotalyesVotes.Text = Percentage.ToString();

3 个答案:

答案 0 :(得分:3)

问题是DATotalYesVotes是一个小于DaTotalVotes的整数。因为/表示整数除法,它在乘以100之前向下舍入。这里有两种方法:

(1)首先乘以100(仍有一些舍入错误 - 但不多)

double Percentage = (DATotalYesVotes * 100 / DaTotalVotes); 

(2)先投两双

double Percentage = ((double)DATotalYesVotes / (double)DATotalVotes)*100;

答案 1 :(得分:2)

您需要将DATotalYesVotes和DaTotalVotes转换为双倍才能将它们分开:

double Percentage = ((double)DATotalYesVotes / (double)DaTotalVotes)*100.0; 

另外,2个整数的除法将导致第3个(和截断的)int。

答案 2 :(得分:1)

整数除法产生一个零的整数结果,然后将它乘以100.尝试将其中一个数字转换为加倍。

double Percentage = ((double)DATotalYesVotes / DaTotalVotes)*100;