C#双格式问题

时间:2010-12-31 15:11:04

标签: c# .net formatting

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

String.Format("${0:0,0.#}",...);

效果很好,但是当数字小于10时,我遇到了问题。例如,数字显示为$ 03,$ 06。

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

的双号

5 个答案:

答案 0 :(得分:7)

请改为尝试:

string result = string.Format("${0:#,##0.00}", d);

如果您的双重代表您应使用的货币:

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

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

在您的示例中,您实际上根本不需要使用string.Format。你可以改用它:

string s = d.ToString("c", CultureInfo.GetCultureInfo("en-US"));

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

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

答案 1 :(得分:5)

使用货币格式:

String.Format("{0:C}", money);

答案 2 :(得分:3)

String.Format("{0:C}", myDecimal);

或     myDecimal.ToString( “C”);

将显示两位小数,包括逗号分隔符并一举包含美元符号(基于文化设置)。如果您希望它转到1或小于2位小数,请在C后面加一个数字(即C3)

答案 3 :(得分:2)

Digits after decimal point
// just two decimal places
String.Format("{0:0.00}", 123.4567);      // "123.46"
String.Format("{0:0.00}", 123.4);         // "123.40"
String.Format("{0:0.00}", 123.0);         // "123.00"

// max. two decimal places
String.Format("{0:0.##}", 123.4567);      // "123.46"
String.Format("{0:0.##}", 123.4);         // "123.4"
String.Format("{0:0.##}", 123.0);         // "123"
// at least two digits before decimal point
String.Format("{0:00.0}", 123.4567);      // "123.5"
String.Format("{0:00.0}", 23.4567);       // "23.5"
String.Format("{0:00.0}", 3.4567);        // "03.5"
String.Format("{0:00.0}", -3.4567);       // "-03.5"

Thousands separator
String.Format("{0:0,0.0}", 12345.67);     // "12,345.7"
String.Format("{0:0,0}", 12345.67);       // "12,346"

Zero
Following code shows how can be formatted a zero (of double type).

String.Format("{0:0.0}", 0.0);            // "0.0"
String.Format("{0:0.#}", 0.0);            // "0"
String.Format("{0:#.0}", 0.0);            // ".0"
String.Format("{0:#.#}", 0.0);            // ""

Align numbers with spaces
String.Format("{0,10:0.0}", 123.4567);    // "     123.5"
String.Format("{0,-10:0.0}", 123.4567);   // "123.5     "
String.Format("{0,10:0.0}", -123.4567);   // "    -123.5"
String.Format("{0,-10:0.0}", -123.4567);  // "-123.5    "

Custom formatting for negative numbers and zero
String.Format("{0:0.00;minus 0.00;zero}", 123.4567);   // "123.46"
String.Format("{0:0.00;minus 0.00;zero}", -123.4567);  // "minus 123.46"
String.Format("{0:0.00;minus 0.00;zero}", 0.0);        // "zero"

Some funny examples
String.Format("{0:my number is 0.0}", 12.3);   // "my number is 12.3"
String.Format("{0:0aaa.bbb0}", 12.3);          // "12aaa.bbb3"

答案 4 :(得分:0)

String.Format("${0:#,0.#}",...); 


应该这样做。
Custom Numeric Format Strings