C#数字类型输出字符串时保留指定小数位数的方法

1、使用占位符:

1)
float f = 321.12345F;
f.ToString("0.00");
这样做无论f是不是整数,都将加上2位小数。

2)
float f = 321.12345F;
f.ToString(".##");
这样做最多显示2位小数

占位符的定义如下:

(0) Digit placeholder. Display a digit or a zero. If the
expression has a digit in the position where the 0 appears in the format
string, display it; otherwise, display a zero in that position.

If the number has fewer digits than there are zeros (on either side
of the decimal) in the format expression, display leading or trailing
zeros. If the number has more digits to the right of the decimal
separator than there are zeros to the right of the decimal separator in
the format expression, round the number to as many decimal places as
there are zeros. If the number has more digits to the left of the
decimal separator than there are zeros to the left of the decimal
separator in the format expression, display the extra digits without
modification.

(#) Digit placeholder.Display a digit or
nothing. If the expression has a digit in the position where the #
appears in the format string, display it; otherwise, display nothing in
that position.

This symbol works like the 0 digit placeholder, except that leading
and trailing zeros aren't displayed if the number has the same or fewer
digits than there are # characters on either side of the decimal
separator in the format expression.

(.) Decimal placeholder. In some locales, a comma is used as
the decimal separator. The decimal placeholder determines how many
digits are displayed to the left and right of the decimal separator. If
the format expression contains only number signs to the left of this
symbol, numbers smaller than 1 begin with a decimal separator. To
display a leading zero displayed with fractional numbers, use 0 as the
first digit placeholder to the left of the decimal separator. The actual
character used as a decimal placeholder in the formatted output depends
on the Number Format recognized by your system.
(,) Thousand separator. In some locales, a period is used as
a thousand separator. The thousand separator separates thousands from
hundreds within a number that has four or more places to the left of the
decimal separator. Standard use of the thousand separator is specified
if the format contains a thousand separator surrounded by digit
placeholders (0 or #). The actual character used as the thousand separator in the formatted output depends on the Number Format recognized by your system.
("ABC")

Literal string. You can place literal strings on either side of
numeric placeholders. For example, you could define a format expression
as "The formatted number is: ###,###.#0"

在msdn中搜索FormatString property可得到

2、使用标准数字格式字符串

如:

float f = 321.12345F;
f.ToString("F3");

结果为321.123

标准数字格式字符串的定义如下:

格式说明符 名称 说明

C 或 c

货币

数字转换为表示货币金额的字符串。转换由用于格式化数字的 NumberFormatInfo 对象的货币格式信息控制。精度说明符指示所需的小数位数。如果省略精度说明符,则使用 NumberFormatInfo 给定的默认货币精度。

D 或 d

十进制数

只有整型才支持此格式。数字转换为十进制数字 (0-9) 的字符串,如果数字为负,则前面加负号。精度说明符指示结果字符串中所需的最少数字个数。如果需要的话,则用零填充该数字的左侧,以产生精度说明符给定的数字个数。

E 或 e

科学计数法(指数)

数字转换为“-d.ddd…E+ddd”或“-d.ddd…e+ddd”形式的字符串,其中每个“d”表示一个数字
(0-9)。如果该数字为负,则该字符串以减号开头。小数点前总有一个数字。精度说明符指示小数点后所需的位数。如果省略精度说明符,则使用默认值,即小
数点后六位数字。格式说明符的大小写指示在指数前加前缀“E”还是“e”。指数总是由正号或负号以及最少三位数字组成。如果需要,用零填充指数以满足最少
三位数字的要求。

F 或 f

固定点

数字转换为“-ddd.ddd…”形式的字符串,其中每个“d”表示一个数字 (0-9)。如果该数字为负,则该字符串以减号开头。精度说明符指示所需的小数位数。如果忽略精度说明符,则使用 NumberFormatInfo 给定的默认数值精度。

G 或 g

常规

根据数字类型以及是否存在精度说明符,数字会转换为固定点或科学记数法的最紧凑形式。如果精度说明符被省略或为零,则数字的类型决定默认精度,如下表所示。

  • Byte 或 SByte:3

  • Int16 或 UInt16:5

  • Int32 或 UInt32:10

  • Int64 或 UInt64:19

  • Single:7

  • Double:15

  • Decimal:29

如果用科学记数法表示数字时指数大于 -5
而且小于精度说明符,则使用固定点表示法;否则使用科学记数法。如果要求有小数点,并且忽略尾部零,则结果包含小数点。如果精度说明符存在,并且结果的有
效数字位数超过指定精度,则通过舍入删除多余的尾部数字。使用科学记数法时,如果格式说明符是“G”,结果的指数带前缀“E”;如果格式说明符是“g”,
结果的指数带前缀“e”。

上述规则有一个例外:如果数字是 Decimal 而且省略精度说明符时。在这种情况下总使用固定点表示法并保留尾部零。

N 或 n

数字

数字转换为“-d,ddd,ddd.ddd…”形式的字符串,其中每个“d”表示一个数字
(0-9)。如果该数字为负,则该字符串以减号开头。小数点左边每三个数字之间插入一个千位分隔符。精度说明符指示所需的小数位数。如果忽略精度说明符,
则使用 NumberFormatInfo 给定的默认数值精度。

P 或 p

百分比

数字转换为由 NumberFormatInfo.PercentNegativePattern 属性或
NumberFormatInfo.PercentPositivePattern 属性定义的、表示百分比的字符串。如果数字为负,则产生的字符串由
PercentNegativePattern 定义并以负号开头。已转换的数字乘以 100
以表示为百分比。精度说明符指示所需的小数位数。如果省略精度说明符,则使用 NumberFormatInfo 给定的默认数值精度。

R 或 r

往返过程

往返过程说明符保证转换为字符串的数值再次被分析为相同的数值。使用此说明符格式化数值时,首先使用常规格式对其进行测试:Double 使用
15 位精度,Single 使用 7
位精度。如果此值被成功地分析回相同的数值,则使用常规格式说明符对其进行格式化。但是,如果此值未被成功地分析为相同数值,则它这样格式
化:Double 使用 17 位精度,Single 使用 9
位精度。虽然精度说明符可以追加到往返过程格式说明符,但它将被忽略。使用此说明符时,往返过程优先于精度。此格式仅受浮点型支持。

X 或 x

十六进制数

数字转换为十六进制数字的字符串。格式说明符的大小写指示对大于 9
的十六进制数字使用大写字符还是小写字符。例如,使用“X”产生“ABCDEF”,使用“x”产生“abcdef”。精度说明符指示结果字符串中所需的最
少数字个数。如果需要的话,则用零填充该数字的左侧,以产生精度说明符给定的数字个数。只有整型才支持此格式。

在msdn中搜索“标准数字格式字符串”可得到

3、使用System.Math.Round函数可以指定小数位数。

上一篇:gitlab用户登录与AD域用户集成


下一篇:C语言输出规定长度的整数,不够位数前面补零