2011-11-21 2 views
0

아래 숫자를 계산하려고합니다. 나는 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

중간 값 인쇄를 시도 했습니까? 즉 DATotalYesVotes 등 – mydogisbox

+0

일반적인 트릭에는'Math.Floor (x + .5)'IIRC가 포함됩니다. – sehe

답변

3

문제는 DATotalYesVotes가 DaTotalVotes보다 작은 정수입니다./정수 나눗셈을 의미하기 때문에, 다음 두 가지 방법이다 (100)에 의해 승산 전에 내림 : 100 제 의하여

(1) 곱하기 (여전히 반올림 오류 - 아니지만 많은)

double Percentage = (DATotalYesVotes * 100/DaTotalVotes); 

(2)

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

감사합니다. 나는이 ID가 이런 식으로해야한다고 생각했습니다. 그것은 완벽하게 작동했습니다. 도와 줘서 고맙다. – CsharpBeginner

1

첫번째 복식에 정수 사업부 제로의 정수 결과를 얻을 수 캐스트, 당신은 숫자 중 하나에 두 배로, 100 개 주조하여 곱합니다.

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

당신은 그들을 분할하기 전에 두 배로 DATotalYesVotes 및 DaTotalVotes을 변환해야합니다 : 2 개의 int의

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

다른 현명한 부문은 3 (및 절단) INT가 발생합니다.

관련 문제