2014-09-28 80 views
-7

双重价值如何格式化的:格式显示

double salary = 12345.6789 

显示为这样:

12,345.68 

使用String.Format()或任何其他的方法呢?

我已经试过

String.Format(value.To String("C", CultureInfo.CurrentCulture))); 

但是这不是我所期待的,我要追加货币(这是在.NET Framework不可用本地货币符号)到一个字符串display.I只需要能够格式化值。

+6

提示到10答案... – 2014-09-28 11:44:31

+0

'的String.Format(“{0 :n}“,salary);' – 2014-09-28 11:46:37

+2

当涉及金钱时,使用变量类型'decimal'而不是'double'来避免问题。如果double来自外部系统,请先将其转换为小数,然后再担心格式化。 – WhoIsRich 2014-09-28 12:34:15

回答

2

您可以使用N format specifier作为;

double salary = 12345.6789; 
Console.WriteLine(salary.ToString("N2")); 

结果将是;

12,345.68 

这说明符默认使用您的CurrentCultureNumberGroupSeparatorNumberDecimalSeparator性能。如果您的CurrentCulture中的这些属性不是,.,则可以将此.ToString()方法的InvariantCulture作为第二个参数提供,如;

double salary = 12345.6789; 
Console.WriteLine(salary.ToString("N2", CultureInfo.InvariantCulture)); 
1

通 “N” 到double.ToString()

var desiredString = salary.ToString("N"); 
+0

这使用当前文化的货币符号进行格式化。那不是我想要的。 – 2014-09-28 11:48:21

+0

你说得对。我混合了“C”和“N”。 – 2014-09-28 11:49:29

1

你想要的格式字符串传递给.ToString()方法。

salary.ToString("N"); 

here更多的格式选项

1

试试这个:

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

更多的例子here

1

您可以使用N standard format specifier,并指定小数点后两位:

string formatted = salary.ToString("N2"); 

将使用该应用程序的当前区域性的小数点分隔符和千位分隔符。如果你想确保它总是使用一段作为小数点分隔符和逗号作为千位分隔符,你可以指定不变文化:

string formatted = salary.ToString("N2", CultureInfo.InvariantCulture);