我正在尝试计算下面的数字。我应该像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();
答案 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;