简体   繁体   中英

How do I format a double to a string and only show decimal digits when necessary?

I have code like:

lblFranshizShowInvwNoskhehEdit.Text = string.Format("{0:n}",
    (double)(int.Parse(drDarman["FranshizDarsad"].ToString()) * 
        Convert.ToInt64(RadNumerictxtPayInvwNoskhehEdit.Text)) / 100);

But {0:n0} string format forces the label's text to not have decimal digits and {0:n} string format forces the label's text to have 2 decimal digits (default).

In my scenario I just want decimal digits when necessary / without rounding them / how can I do that?

You can just do:

string.Format("{0}", yourDouble);

It will include only digits when necessary.

If you want other examples of formatting doubles to string check out this link .

EDIT: Based on your comment you want the , seperator so you could do:

string.Format("{0:0,0.########}", yourDouble);

Just put as many # for the max number of decimal places you want to show. It will only show the digits when necessary but up to the maximum digits based on how many # you include in the format. The # means only show a digit if necessary so if you give a number like 123 with no decimal, it will display as 1,234 but if you give it 1234.456 , it will display as 1,234.456 . If you go beyond the max digits you specified they will be rounded.

EDIT: To fix your double zero scenario just change it to:

string.Format("{0:#,0.########}", yourDouble);

That should work perfectly now :)

这是我的 :

string.Format("{0:n2}", double);

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