B. Clay Shannon B. Clay Shannon - 1 year ago 85
C# Question

How can I get no more and no less than two decimal places in a decimal value?

With this code:

totalPriceCell.Value2 = TotalPrice;

...I was getting values such as "3.14963245" which I want to be "3.15" instead.

So I used this code:

totalPriceCell.Value2 = TotalPrice.ToString("#.##");

...and that did solve that problem, but I still get values such as "7.6" and "35" (which I want to be "7.60" and "35.00")

What can I do to accomplish this, outside of manually appending a "0" for vals such as "7.6" and manually appending ".00" for values such as "35"?


Niether suggestion worked, neither this:

totalPriceCell.Value2 = TotalPrice.ToString("F2");

...nor this:

totalPriceCell.Value2 = Math.Round(TotalPrice, 2).ToString("F2");

I still get "7.6" etc.:


It turns out to be an Excel problem, because when I added this:

MessageBox.Show(Math.Round(TotalPrice, 2).ToString("F2"));

...I did see values such as "7.60" (not "7.6").

enter image description here

Answer Source

It looks like you're trying to round the numbers to 2 decimal places, and then output the answer with trailing 0.

Just use the Math.Round() function to round, and then display using the .ToString("F2") format:

totalPriceCell.Value2 = Math.Round(TotalPrice, 2).ToString("F2");

Math.Round(arg1, arg2): Where 1st argument (arg1) is the value you want to round, and 2nd argument (arg2) is the decimal places you wish to round to.

.ToString("F2"): Usage of "F2" - F being the "fixed-point" format specified; 2 being the number of digits after the decimal point.

Hope this helps :)

Recommended from our users: Dynamic Network Monitoring from WhatsUp Gold from IPSwitch. Free Download