开发者

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, i.e. 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"


You could use something like: 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.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜