65.9K
CodeProject 正在变化。 阅读更多。
Home

格式化数字以显示

starIconstarIconstarIconstarIcon
emptyStarIcon
starIcon

4.51/5 (26投票s)

2012 年 6 月 7 日

CPOL

3分钟阅读

viewsIcon

132616

格式化数字以显示

引言

最终用户/客户端需要以不同格式显示数字数据的次数。 在这篇文章中,我将讨论 C#.net 提供的各种自定义格式来实现此需求。 在这里,我将逐个讨论每种格式

"0" 自定义说明符 

ToString("00000") - 当数字的位数少于指定的零的位数时,格式在显示数字时添加前导零。 当执行以下代码时,输出显示 01234,因为数字的位数少于零的位数。

double value;
value = 1234;
Console.WriteLine("Format 1:  " + value.ToString("00000"));
Console.WriteLine();
ToString("00.00") - 格式与上述操作相同,如果数字位数较少则替换零,但在小数点后的零允许显示等于小数点后零的位数的数字,如果数字位数少于显示零在那个地方。 以下代码的输出是 01.24,即小数点后只允许 2 位数字。 注意:- 小数点根据指定的文化显示。
value = 1.235;
Console.WriteLine("Format 2:  " + value.ToString("00.00", 
                CultureInfo.InvariantCulture));
Console.WriteLine();
ToString("0,0") - 格式导致在数字之间显示逗号。 当执行以下代码时,它会显示在每三位数字后 1,234,567,890。 注意:- 在这种情况下,逗号被文化取代。
value = 1234567890;
Console.WriteLine("Format 3:  " + value.ToString("0,0",
                CultureInfo.InvariantCulture));
Console.WriteLine();
ToString("0,0.0") - 格式是上述格式的组合。
value = 1234567890.123456;
Console.WriteLine("Format 4:  " + value.ToString("0,0.0", 
                CultureInfo.InvariantCulture));
Console.WriteLine();
输出

"#" 自定义说明符  

此说明符与 "0" 说明符的作用相同,但基本区别在于如果数字不等于 #,它不会做任何事情,而 "0" 说明符在数字不存在时替换 0。

ToString("#####") 或 ToString("#") - 格式允许用#替换每个数字,以下代码的输出是9867752985,这与 "0" 说明符不同。

value = 9867752985;
Console.WriteLine(value.ToString("#####"));
Console.WriteLine(value.ToString("#"));
Console.WriteLine();
以下代码与上述代码相同,但通过用每个数字替换每个 # 来格式化数字。 所以代码的输出是 98-67-75。
value = 986775;
Console.WriteLine(value.ToString("[##-##-##]"));
Console.WriteLine();
以下代码再次执行格式化数字并将其显示为 (986) 77-52985
value = 9867752985;
Console.WriteLine(value.ToString("(###) ###-####"));
Console.WriteLine();

输出

"." 自定义说明符

此说明符已与 "0" 说明符一起讨论,如果数字不存在,则用于显示数字,则在该位置显示 0,即在开头或结尾。 所以以下代码的输出是 "01.20",如果我设置 value = 12,那么输出是 "12.00"。 但是在这里我设置了文化信息,所以输出是 "01,20",所以 "." 被 "," 替换。

value=1.2
Console.WriteLine(value.ToString("00.00",CultureInfo.CreateSpecificCulture("da-DK")));
  

"%" 自定义说明符 

格式导致数字与 "%" 一起显示并将数字乘以 100。 所以如果数字是 0.86,在应用 % 说明符后,它会显示为 "8.6%",如果数字是 86,那么输出将是 "8600%"。 以下代码执行相同的操作  

value = .086;
Console.WriteLine(value.ToString("#0.##%", CultureInfo.InvariantCulture));
Console.WriteLine();

value = .869;
Console.WriteLine(value.ToString("00.##%", CultureInfo.InvariantCulture));
Console.WriteLine();

value = 86;
Console.WriteLine(value.ToString("#0.##%", CultureInfo.InvariantCulture));
Console.WriteLine();

输出

"‰" 自定义说明符

千分号 (‰ 或 \u2030) 格式将数字乘以 1000。 因此,以下代码的输出是 3.54‰。 但我认为这种格式在某些地方无用。

value = .00354;
string perMilleFmt = "#0.## " + '\u2030';
Console.WriteLine(value.ToString(perMilleFmt, CultureInfo.InvariantCulture));

"E" 和 "e" 自定义说明符

这会导致数字以科学计数法格式显示,带有 "E 或 e" 符号。  

value = 86000;
Console.WriteLine(value.ToString("0.###E+0", CultureInfo.InvariantCulture));
Console.WriteLine();

Console.WriteLine(value.ToString("0.###E+000", CultureInfo.InvariantCulture));
Console.WriteLine();

value = -80;
Console.WriteLine(value.ToString("0.###E-000", CultureInfo.InvariantCulture));
Console.WriteLine();

输出

";" 分隔符

这允许根据数字符号显示数字。 如您在以下代码中看到的那样,fmt 变量是我将要应用于我的数字的格式,这里第一个格式在 ; 之前是正数,第二个格式是负数,最后一个格式是零值。 基本上是 "正数;负数;零" 格式。 您可以在此代码的输出中看到它的作用。

double posValue = 1234;
double negValue = -1234; 
double zeroValue = 0;

string fmt = "+##;-##;**Zero**";

Console.WriteLine("value is positive : " + posValue.ToString(fmt));    
Console.WriteLine();

Console.WriteLine("value is negative : " +negValue.ToString(fmt));    
Console.WriteLine();

Console.WriteLine("value is Zero : " + zeroValue.ToString(fmt));
Console.WriteLine();

输出

结论

因此,以上文章讨论了如何使用 ToString() 方法和可用的不同格式轻松地将您的数值更改为显示给应用程序的最终客户。

来源:  

http://pranayamr.blogspot.com/2012/06/format-number-to-display.html 

http://msdn.microsoft.com/en-us/library/0c899ak8.aspx 

© . All rights reserved.