C#中的浮点数格式控制 标准数字格式字符串用于格式化通用数值类型。标准格式字符串采取“Axx”形式,其中“A”为单个字母字符(被称为格式说明符),“xx”是可选的整数(被称为精度说明符)。格式说明符必须是某个内置格式符。精度说明符的范围从 0 到 99,它控制有效位数或小数点右边零的个数。格式字符串不能包含空白。如果格式字符串不包含某个标准格式说明符,则引发 FormatException。例如,格式字符串“z”会由于包含一个字母字符而被解释为标准数字格式字符串,但字母字符不属于标准数字格式说明符,所以会引发 FormatException。任何不符合标准数字格式字符串定义的数字格式字符串都被解释为自定义数字格式字符串。格式字符串“c!”包含两个字母字符,因此被解释为自定义格式字符串,尽管字符“c”是标准数字格式说明符。下表描述了标准数字格式字符串。请注意,这些格式说明符产生的输出字符串受“区域选项”控制面板中的设置的影响。使用不同设置的计算机会生成不同的输出字符串。(C 或 c 货币 数字转换为表示货币金额的字符串。 D 或 d 十进制 只有整型才支持此格式。数字转换为十进制数字 (0-9) 的字符串 E 或 e 科学计数法(指数) 数字转换为“-d.ddd...E+ddd”或“-d.ddd...e+ddd”形式的字符串 F 或 f 固定点 数字转换为“-ddd.ddd...”形式的字符串,其中每个“d”表示一个数字 (0-9)。如果该数字为负,则该字符串以减号开头。精度说明符指示所需的小数位数。如果忽略精度说明符,则使用 NumberFormatInfo 给定的默认数值精度。 )使用例子: using System; using System.Threading; using System.Globalization;class Class1 { static void Main() { Thread.CurrentThread.CurrentCulture = new CultureInfo("en-us" ; double MyDouble = 123456789;
Console.WriteLine("The examples in en-US culture.\n" ; Console.WriteLine(MyDouble.ToString("C" ); Console.WriteLine(MyDouble.ToString("E" ); Console.WriteLine(MyDouble.ToString("P" ); Console.WriteLine(MyDouble.ToString("N" ); Console.WriteLine(MyDouble.ToString("F" ); Thread.CurrentThread.CurrentCulture = new CultureInfo("de-DE" ; Console.WriteLine("The examples in de-DE culture.\n" ; Console.WriteLine(MyDouble.ToString("C" ); Console.WriteLine(MyDouble.ToString("E" ); Console.WriteLine(MyDouble.ToString("P" ); Console.WriteLine(MyDouble.ToString("N" ); Console.WriteLine(MyDouble.ToString("F" ); } } 上述代码示例将下列内容显示到控制台。 The examples in en-US culture: $123,456,789.00 1.234568E+008 12,345,678,900.00% 123,456,789.00 123456789.00 The examples in de-DE culture: 123.456.789,00 DM 1,234568E+008 12,345,678,900.00% 123.456.789,00 123456789,00你要是小数点后保留三位的话,我觉得用: Console.WriteLine(MyDouble.ToString("F3" ); 试试看
D 或 d 十进制 只有整型才支持此格式。数字转换为十进制数字 (0-9) 的字符串
E 或 e 科学计数法(指数) 数字转换为“-d.ddd...E+ddd”或“-d.ddd...e+ddd”形式的字符串
F 或 f 固定点 数字转换为“-ddd.ddd...”形式的字符串,其中每个“d”表示一个数字 (0-9)。如果该数字为负,则该字符串以减号开头。精度说明符指示所需的小数位数。如果忽略精度说明符,则使用 NumberFormatInfo 给定的默认数值精度。
)使用例子:
using System;
using System.Threading;
using System.Globalization;class Class1
{
static void Main()
{
Thread.CurrentThread.CurrentCulture = new CultureInfo("en-us" ;
double MyDouble = 123456789;
Console.WriteLine("The examples in en-US culture.\n" ;
Console.WriteLine(MyDouble.ToString("C" );
Console.WriteLine(MyDouble.ToString("E" );
Console.WriteLine(MyDouble.ToString("P" );
Console.WriteLine(MyDouble.ToString("N" );
Console.WriteLine(MyDouble.ToString("F" ); Thread.CurrentThread.CurrentCulture = new CultureInfo("de-DE" ;
Console.WriteLine("The examples in de-DE culture.\n" ;
Console.WriteLine(MyDouble.ToString("C" );
Console.WriteLine(MyDouble.ToString("E" );
Console.WriteLine(MyDouble.ToString("P" );
Console.WriteLine(MyDouble.ToString("N" );
Console.WriteLine(MyDouble.ToString("F" );
}
}
上述代码示例将下列内容显示到控制台。
The examples in en-US culture:
$123,456,789.00
1.234568E+008
12,345,678,900.00%
123,456,789.00
123456789.00
The examples in de-DE culture:
123.456.789,00 DM
1,234568E+008
12,345,678,900.00%
123.456.789,00
123456789,00你要是小数点后保留三位的话,我觉得用:
Console.WriteLine(MyDouble.ToString("F3" );
试试看