简体   繁体   中英

C# format to thousand seperator

I am trying to format user input to a thousand seperator format. I tried the code here, but it keeps breaking the application:

Amt.Text = String.Format("{0:0,0.00}", Convert.ToDouble(Amt));

So when the user inputs 3566412 , then it needs to convert automatically to 3,566,412

You are trying to convert the control (named Amt ) to a double , which is a bad idea since you want to convert the text of the control ( Amt.Text ). I would suggest to use a decimal since that is more precise and will not cause floating point issues:

Amt.Text = String.Format("{0:0,0.00}", Convert.ToDecimal(Amt.Text));

Another thing to consider is to use a control that can mask itself, so you don't need to replace the text yourself every time.

You might want to check out Standard Numeric Format Strings at MSDN

Then you could do something like

Amt.Text = inputnumber.ToString("N");

Which will format 3566412 to 3,566,412.0

If you want to take it directly from the textbox, you could do something like this, which checks if the text can be parsed before setting the text

double result = 0;
if (double.TryParse(Amt.Text, out result)
{
    Amt.Text = result.ToString("N");
}

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM