views:

107

answers:

2

I'm making a small tip calculator for the Windows Phone 7 and I'm almost done:

alt text

I'm having trouble getting the trailing decimals places to do what I want though. I want to display the result with only two values after the comma. Any suggestions? Here's my code:

private void btnSubmit_Click(object sender, RoutedEventArgs e)
{
    if (ValidateInputs())
    {
        lblTotalTip.Text = CalculateTip(txtTotalBill.Text, txtPercentage.Text);                
    }
}

private string CalculateTip(string Total, string Percentage)
{
    decimal totalBill = decimal.Parse(Total);
    decimal percentage = decimal.Parse(Percentage);

    string result = ((percentage / 100) * totalBill).ToString();
    return result;
}

private bool ValidateInputs()
{
    return true;
}   
+16  A: 

You should use currency formatting:

string result = ((percentage / 100) * totalBill).ToString("C");

For your example, the result would be "$18.90". The benefit of this approach is that the result will be properly localized as well (e.g. some currencies have comma separators instead of ".").

Additionally, if you want to localize the "$" symbol in your UI, you can use NumberFormatInfo.CurrentInfo.CurrencySymbol.

Chris Schmich
A: 

two options:

format the string:

string.Format("{0:#####.00}", theValue)

or round the number using Math.Round which accept a precision parameter.

Ken Egozi