C#十进制格式查询

我试图格式化一个小数,以便它将显示如下:

14.5应显示为“14.50”14.50应显示为“14.50”14.05应显示为“14.05”14.00应显示为“14”

是否可以使用单个字符串格式,即不使用条件格式?

我试过“0。##”(不满足第一个例子)和“0.00”(不满足最后一个例子)。

谢谢。

是。 您可以使用“G”格式说明符。 有关示例,请参阅String.Format的文档。

例如:

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)

如果没有某种条件格式,我认为你不能做到这一点,因为你希望格式在不同的情况下做不同的事情。

如果你满足于14.5而不是14.50,那么你可以使用0。##语法,但我想不出办法。

按照里德的回答,然后添加一个检查:

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

不完全优雅,但会得到你想要的结果。

这是假设在评论中说不适用于14.5的人是正确的。