简体   繁体   中英

C# Decimal Formatting Query

I am trying to format a decimal so that it will get displayed as so:

14.5 should get displayed as "14.50" 14.50 should get displayed as "14.50" 14.05 should get displayed as "14.05" 14.00 should get displayed as "14"

Is the possible with a single String Format, ie not using conditional formatting?

I've tried "0.##" (doesn't satisfy the first example) and "0.00" (doesn't satisfy the last example).

Thanks.

Yes. You can use the "G" format specifier. For samples, see String.Format 's documentation.

For example:

decimal value = 14.05m;
string result = String.Format("{0:G}", value); // "14.05"

value = 14m;
result = String.Format("{0:G}", value); // "14"

您可以使用以下格式:FormatNumber(VariableToBeFormatted,2).Replace(“。00”,String.Empty)

I don't think you'll be able to do that without some sort of conditional formatting, because you want the formatting to do different things in different cases.

If you'd settle for 14.5 instead of 14.50, then you'd be OK with the 0.## syntax, but I can't think of a way to do it.

Follow Reed's answer and add a check after that:

resultArray = result.Split('.');

if (resultArray.Length > 1 && resultArray[1].Length != 2)
    result = String.Format("{0.00}", value);

Not exactly elegant, but will get you the result you desire.

This is assuming the person saying it doesn't apply to 14.5 is correct in the comments.

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