15,029,188 members
See more:
hi i am using int32 variable name 'count' and 'totalcount' to get the total number of students for boys and girls. the total number is found fine,
i want to calculate the %age also

count = ((count * 100) / totalcount);

it generates the resultant number but i want the round figure ie 29.8 is displayed as 29, it is making problem in completing the total 100 %
Posted
Updated 28-Dec-16 22:54pm

Do u want Round of value ? use "System.Math.Round(//val));"
yesotaso 7-Sep-11 17:37pm

Common C Programming Errors or you can say "C alike"...
double fifty = (1/2) * 100;
This code sets fifty to 0 not 50! Why? Because of integer division.
If you want something nailed use hammer, if you want something sliced use a knife...

## Solution 4

To have the totals add up to 100, your in best bet is to keep the calculations `decimal `not `int` and format the decimals when showing in your UI to show integers only (format string = "0").
lukeer 7-Sep-11 6:17am

+5 for using decimal

## Solution 6

A general solution to ensure that a rounded collection of numbers still adds up to the same as it did before is quite difficult. However, I think you are just doing two numbers, so one is 100% minus the other:
```int boys_pc = (int)(0.5f + ((100f * boys_count) / total_count));
int girls_pc = 100 - boys_pc;```

Cast to float to avoid integer division giving you a zero, and add 0.5 for integer rounding. Use 0.5f not 0.5 to keep it from expanding to double (which is overkill for something which will be rounded to int anyway).

Edit: If you have to multiply anyway, just multiply by a float constant (e.g. 100f not 100) to avoid integer division.
v3
lukeer 7-Sep-11 6:15am

I think there is an error in your calculation.
Think of 80 boys out of 100 students.
That would be a rate of 0.8 (innermost parentheses). Adding 0.5F would exceed 100%. Hence, girls percentage would go negative.
BobJanova 7-Sep-11 13:12pm

Uh yeah I forgot to multiply by 100 first. (The OP wants 0-100, not 0-1.) Thanks.
[no name] 29-Dec-16 4:55am

dhdhdhdh

## Solution 2

Use
`System.Math.Round()`
method.

## Solution 3

Use Math.Round(56.8) will be 57

## Solution 7

You can use ToString to format how you want the display.
So if you have

C#
```double percent;
...
percent = 29.8;

...

public string PercentDisplay
{
get{return percent.ToString("00")} //Will always show 2 digits and no decimal
}```

In comparison if you always wanted 2 decimal places (even if they are 0's) you can code like this `percent.ToString("00.00")`
v3

## Solution 1

percentage should be calculate by below formula

count = ((count / totalcount)*100);
Db issues 7-Sep-11 3:08am

the result is 0 in that case i tried before,
now i have declared double percent = ((count * 100) / totalcount);
it displays same result but how to round the figure and get the floor/ ceiling function
hiteshIT 5-May-19 10:33am

Pls try
int resultAmtPer = (int)(0.5f + ((100f * definedPerAmt) / TotalAmt));
int avgPer = 100 - resultAmtPer;
Anuja Pawar Indore 7-Sep-11 3:18am

This will give ans as zero.
if (112/200)*100 will result zero
GParkings 7-Sep-11 4:11am

(count/totalcount)*100 is mathematically synonymous with (count * 100) / totalcount
pooja 08 7-Sep-11 5:01am

your problem is resolved or not?
Db issues 7-Sep-11 5:08am

yes logically there is no difference but i found answer zero, no my problem is still there
pooja 08 7-Sep-11 6:16am

try to declare int as int32 i am not sure about it but check?
pooja 08 7-Sep-11 6:32am

while showing at ui just convert your count value to TOstring(); it will resolve your problem
W Balboos, GHB 29-Dec-16 9:36am

LOGICALLY THERE IS A HUGE DIFFERENCE !

The division before multiplying by 100 will (for example) always yield zero if count is less than total count. Multiplying by 100 at that point is a waste of time.

You multiply first, then divide, so that the value will not always be zero.