C#双格式问题

Ant*_*ton 2 .net c# formatting

我正在使用下一个代码来格式化双值:

String.Format("${0:0,0.#}",...);
Run Code Online (Sandbox Code Playgroud)

它工作得很好,但是当数字小于10时,我遇到了问题.例如,数字显示为$ 03,$ 06.

请告诉我正确的字符串,以下一格式ddd,ddd,ddd,ddd.dd为双号

Mar*_*ers 7

试试这个:

string result = string.Format("${0:#,##0.00}", d);
Run Code Online (Sandbox Code Playgroud)

如果您的双倍代表货币,您应该使用:

string result = string.Format(CultureInfo.GetCultureInfo("en-US"), "{0:c}", d);
Run Code Online (Sandbox Code Playgroud)

请注意,如果省略CultureInfo.InvariantCulture它,则可以使用$某些计算机以外的其他内容显示.例如,在我的计算机上string.Format("{0:c}", d)给出的2,00 kr可能不是你想要的.

在您的示例中,您实际上根本不需要使用string.Format.您可以使用此代替:

string s = d.ToString("c", CultureInfo.GetCultureInfo("en-US"));
Run Code Online (Sandbox Code Playgroud)

除了更清晰和更简洁之外,它还具有避免拳击的优点.当然,如果你的格式字符串比你的例子更复杂,那么使用它是有意义的string.Format.

作为最后的评论,我建议不要使用双打来存储货币.十进制类型可能更合适.


Ali*_*tad 5

使用货币格式:

String.Format("{0:C}", money);
Run Code Online (Sandbox Code Playgroud)