14,736,900 members
1.00/5 (1 vote)
See more:
I have a web form that does calculations by textbox text change. I have a code that divides two numbers and shows the answer in another textbox. The answer is then rounded and shown in the textbox. The answer shown is not rounded right. Here is what I have:

Textbox1 = 923

b = 120

Here is the calculation:
```int a = Convert.ToInt32(Textbox1.Text);
int b = 120;
Textbox3.text = Convert.ToString(a / b);```

Here is my rounding code:
`Textbox3.Text = Math.Round(Convert.ToDouble(TextBoxNCCDR.Text), 2).ToString();`

When the answer is rounded the new answer is 7. Why is it not 8? How can I get the rounding to round to the nearest whole number?
Posted
Updated 18-Nov-14 7:42am
v4
PIEBALDconsult 18-Nov-14 12:37pm

Unclear.
7.691.666666666667 has an extra decimal point.
923 / 168 is 5
What is TextBoxNCCDR.Text ?

Please use Improve question to clarify what you are trying to do.

## Solution 1

Because it's integer arithmetic - and it doesn't know anything about fractional parts!
Change all your `int` values to `double` and it'lkl do what you expected:
```double a = Convert.ToDouble(Textbox1.Text);
double b = 168;
Textbox3.text = (a / b).ToString();```

BTW: The standard way to do any type to a string is to use the ToString method for the class rather than Convert.ToString - every type implements it, and your classes can override it to produce a meaningful message.

And rounding up is easy: Math.Ceiling will do it:
`Console.WriteLine(Math.Ceiling(7.6916666666));`
Will give you 8
v2
Computer Wiz99 18-Nov-14 12:43pm

OriginalGriff, that worked. Thanks. Do I have to change all of the int to Double in my code or just for the rounding?
OriginalGriff 18-Nov-14 13:33pm

Depends on what you are trying to do.
Of you want to hold, work with, or process any values which have fractional part then you can't use an integer value - as they will automatically discard it and truncate the value:
Double - 12.3
To integer - 12
To double - 12.0

So if you want fractional values at any point, it's best to keep to double values throughout and only use ints when you really need an integer value.