`
hqs7636
  • 浏览: 221014 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

printf()的格式控制字符

阅读更多
一、printf( )的格式字符:

① d格式符 用来输出十进制整数
%d 按整型数据的实际长度输出
读作mod d。

%md 使输出长度为m,如果数据长度小于m,则左补空格,如果大于m,则输出实际长度
%ld 输出长整型数据
② o格式符 以八进制形式输出整数
③ x格式符 以十六进制形式输出整数
④ u格式符 用来输出unsigned型数据,以十进制形式输出
⑤ c格式符 用来输出一个字符
⑥ s格式符 输出一个字符串
%s 输出实际长度字符串
%ms 输出的串占m列,如果串长度小于m,左补空格,如果大于m,实际输出
%-ms输出的串占m列,如果串长度小于m,右补空格,
%m.ns 输出占m列,但只取字符串中左端n个字符并靠右对齐
%-m.ns m、n含义同上,靠左对齐,如果n>m,则m自动取n值
⑦ f格式符 以小数形式输出实数
%f 整数部分全部输出,小数部分输出6位
%m.nf 输出数据共占m列,其中有n位小数。如果数值长度小于m,左补空格
%-m.nf 同上,右补空格
⑧ e格式符 以指数形式输出实数
%e 系统指定6位小数,5位指数(e+002 )
⑨ g格式符 输出实数,根据数值大小,自动选f格式或e格式




二、JAVA常用的格式控制和转换字符


3.2.4 输出格式控制

标准输出通常是使用命令行模式作为输出,这里介绍几个输出格式控制技巧,在命令行模式显示时可以协助控制输出的格式。首先介绍格式控制字符,常用的控制字符如表3-1所示。

控 制 字 符            作 用

\                              反斜线

\'                              单引号'

\"                            双引号"

\uxxxx                   以十六进制数指定Unicode字符输出

\dxxx                    以八进制数指定Unicode字符输出

\b                         倒退一个字符

\f                          换页

\n                          换行

\r                         光标移至行首

\t                         跳格(一个Tab键)







表3-2 常用格式转换字符

转换字符                   作 用



%%                           在字符串中显示%

%d                           以十进制整数方式输出,提供的数必须是Byte、Short、 Integer、Long或BigInteger

%f                            将浮点数以十进制方式输出,提供的数必须是Float、Double或 BigDecimal

%e, %E                  将浮点数以十进制方式输出,并使用科学记数法,提供的数必须是Float、 Double或BigDecimal

%a, %A                  使用科学记数法输出浮点数,以十六进制输出整数部分,以十进制输出指数部分,提供的数必须Float、Double、
                                 BigDecimal

%o                           以八进制整数方式输出,提供的数必须是Byte、Short、Integer、Long或BigInteger

%x, %X                   将浮点数以十六进制方式输出,提供的数必须是Byte、Short、Integer、Long、或BigInteger

%s, %S                  将字符串格式化输出

%c, %C                  以字符方式输出,提供的数必须是Byte、Short、Character或 Integer

%b, %B                  将true或false输出(或TRUE、FALSE,使用 %B)。另外,非null值输出是true,null值输出是false

%t, %T                    输出日期/时间的前置,详情请看在线API文件




三、.NET Framework 开发人员指南

标准数字格式字符串

标准数字格式字符串用于格式化通用数值类型。标准数字格式字符串采用 Axx 的形式,其中 A 是称为格式说明符的字母型字符,xx 是称为精度说明符的可选整数。精度说明符的范围从 0 到 99,并且影响结果中的位数。任何包含一个以上字母字符(包括空白)的数字格式字符串都被解释为自定义数字格式字符串。

下表描述了标准数字格式说明符。有关各格式说明符所产生输出的示例,请参见标准数字格式字符串输出示例。有关更多信息,请参见表格之后的备注。
格式说明符 名称 说明

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 而且小于精度说明符,则使用定点表示法;否则使用科学记数法。如果要求有小数点,并且忽略尾部零,则结果包含小数点。如果精度说明符存在,并且结果的有效数字位数超过指定精度,则通过舍入删除多余的尾部数字。

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

使用科学记数法时,如果格式说明符是“G”,结果的指数带前缀“E”;如果格式说明符是“g”,结果的指数带前缀“e”。

N 或 n


数字


数字转换为“-d,ddd,ddd.ddd…”形式的字符串,其中“-”表示负数符号(如果需要),“d”表示数字 (0-9),“,”表示数字组之间的千位分隔符,“.”表示小数点符号。实际的负数模式、数字组大小、千位分隔符以及十进制分隔符由当前 NumberFormatInfo 对象指定。

精度说明符指示所需的小数位数。如果忽略精度说明符,则使用当前 NumberFormatInfo 对象给定的默认数值精度。

P 或 p


百分比


数字转换为由 NumberFormatInfo.PercentNegativePattern 或 NumberFormatInfo.PercentPositivePattern 属性定义的、表示百分比的字符串,前者用于数字为负的情况,后者用于数字为正的情况。已转换的数字乘以 100 以表示为百分比。

精度说明符指示所需的小数位数。如果忽略精度说明符,则使用当前 NumberFormatInfo 对象给定的默认数值精度。

R 或 r


往返过程


只有 Single 和 Double 类型支持此格式。往返过程说明符保证转换为字符串的数值再次被分析为相同的数值。使用此说明符格式化数值时,首先使用常规格式对其进行测试:Double 使用 15 位精度,Single 使用 7 位精度。如果此值被成功地分析回相同的数值,则使用常规格式说明符对其进行格式化。但是,如果此值未被成功地分析为相同数值,则它这样格式化:Double 使用 17 位精度,Single 使用 9 位精度。

虽然此处可以存在精度说明符,但它将被忽略。使用此说明符时,往返过程优先于精度。

X 或 x


十六进制数


只有整型才支持此格式。数字转换为十六进制数字的字符串。格式说明符的大小写指示对大于 9 的十六进制数字使用大写字符还是小写字符。例如,使用“X”产生“ABCDEF”,使用“x”产生“abcdef”。

精度说明符指示结果字符串中所需的最少数字个数。如果需要的话,则用零填充该数字的左侧,以产生精度说明符给定的数字个数。

任何其他单个字符


(未知说明符)


(未知说明符将引发运行库格式异常。)
备注
控制面板设置

控制面板中“区域和语言选项”项中的设置会影响由格式化操作产生的结果字符串。这些设置用于初始化与当前线程区域性关联的 NumberFormatInfo 对象,并且当前线程区域性将提供用于控制格式设置的值。使用不同设置的计算机会生成不同的结果字符串。
NumberFormatInfo 属性

格式化受当前 NumberFormatInfo 对象的属性影响,其由当前线程区域性隐式提供或由调用格式化的方法的 IFormatProvider 参数显示提供。为该参数指定 NumberFormatInfo 或 CultureInfo 对象。
整型和浮点型数值类型

对标准数字格式说明符的一些说明涉及到整型或浮点型数值类型。整型数值类型有 Byte、SByte、Int16、Int32、Int64、UInt16、UInt32 和 UInt64。浮点型数值类型有 Decimal、Single 和 Double。
浮点型无穷大和 NaN

请注意,无论格式字符串原来是什么值,只要 Single 或 Double 浮点类型的值为正无穷大、负无穷大或非数字 (NaN),格式字符串就分别是当前适用的 NumberFormatInfo 对象指定的 PositiveInfinitySymbol、NegativeInfinitySymbol 或 NaNSymbol 属性的值。
示例

下面的代码示例使用线程当前区域性、指定区域性以及所有标准数字格式说明符对一个整型数值和一个浮点型数值进行格式化。本代码示例使用两种特定数值类型,但对于任一基本数值类型(Byte、SByte、Int16、Int32、Int64、UInt16、UInt32、UInt64、Decimal、Single 和 Double)将产生类似的结果。

C#
复制代码

// This code example demonstrates the ToString(String) and
// ToString(String, IFormatProvider) methods for integral and
// floating-point numbers, in conjunction with the standard
// numeric format specifiers.
// This code example uses the System.Int32 integral type and
// the System.Double floating-point type, but would yield
// similar results for any of the numeric types. The integral
// numeric types are System.Byte, SByte, Int16, Int32, Int64,
// UInt16, UInt32, and UInt64. The floating-point numeric types
// are Decimal, Single, and Double.

using System;
using System.Globalization;
using System.Threading;

class Sample
{
    public static void Main()
    {
// Format a negative integer or floating-point number in various ways.
    int    integralVal = -12345;
    double floatingVal = -1234.567d;

    string msgCurrency =    "(C) Currency: . . . . . . ";
    string msgDecimal  =    "(D) Decimal:. . . . . . . ";
    string msgScientific =  "(E) Scientific: . . . . . ";
    string msgFixedPoint =  "(F) Fixed point:. . . . . ";
    string msgGeneral =     "(G) General (default):. . ";
    string msgNumber =      "(N) Number: . . . . . . . ";
    string msgPercent =     "(P) Percent:. . . . . . . ";
    string msgRoundTrip =   "(R) Round-trip: . . . . . ";
    string msgHexadecimal = "(X) Hexadecimal:. . . . . ";

    string msg1 = "Use ToString(String) and the current thread culture.\n";
    string msg2 = "Use ToString(String, IFormatProvider) and a specified culture.\n";
    string msgCulture     = "Culture:";
    string msgIntegralVal = "Integral value:";
    string msgFloatingVal = "Floating-point value:";

    CultureInfo ci;
//
    Console.Clear();
    Console.WriteLine("Standard Numeric Format Specifiers:\n");
// Display the values.
    Console.WriteLine(msg1);

// Display the thread current culture, which is used to format the values.
    ci = Thread.CurrentThread.CurrentCulture;
    Console.WriteLine("{0,-26}{1}", msgCulture, ci.DisplayName);

// Display the integral and floating-point values.
    Console.WriteLine("{0,-26}{1}", msgIntegralVal, integralVal);
    Console.WriteLine("{0,-26}{1}", msgFloatingVal, floatingVal);
    Console.WriteLine();

// Use the format specifiers that are only for integral types.
    Console.WriteLine("Format specifiers only for integral types:");
    Console.WriteLine(msgDecimal     + integralVal.ToString("D"));
    Console.WriteLine(msgHexadecimal + integralVal.ToString("X"));
    Console.WriteLine();

// Use the format specifier that is only for the Single and Double
// floating-point types.
    Console.WriteLine("Format specifier only for the Single and Double types:");
    Console.WriteLine(msgRoundTrip   + floatingVal.ToString("R"));
    Console.WriteLine();

// Use the format specifiers that are for integral or floating-point types.
    Console.WriteLine("Format specifiers for integral or floating-point types:");
    Console.WriteLine(msgCurrency    + floatingVal.ToString("C"));
    Console.WriteLine(msgScientific  + floatingVal.ToString("E"));
    Console.WriteLine(msgFixedPoint  + floatingVal.ToString("F"));
    Console.WriteLine(msgGeneral     + floatingVal.ToString("G"));
    Console.WriteLine(msgNumber      + floatingVal.ToString("N"));
    Console.WriteLine(msgPercent     + floatingVal.ToString("P"));
    Console.WriteLine();

// Display the same values using a CultureInfo object. The CultureInfo class
// implements IFormatProvider.
    Console.WriteLine(msg2);

// Display the culture used to format the values.
// Create a European culture and change its currency symbol to "euro" because
// this particular code example uses a thread current UI culture that cannot
// display the euro symbol (€).
    ci = new CultureInfo("de-DE");
    ci.NumberFormat.CurrencySymbol = "euro";
    Console.WriteLine("{0,-26}{1}", msgCulture, ci.DisplayName);

// Display the integral and floating-point values.
    Console.WriteLine("{0,-26}{1}", msgIntegralVal, integralVal);
    Console.WriteLine("{0,-26}{1}", msgFloatingVal, floatingVal);
    Console.WriteLine();

// Use the format specifiers that are only for integral types.
    Console.WriteLine("Format specifiers only for integral types:");
    Console.WriteLine(msgDecimal     + integralVal.ToString("D", ci));
    Console.WriteLine(msgHexadecimal + integralVal.ToString("X", ci));
    Console.WriteLine();

// Use the format specifier that is only for the Single and Double
// floating-point types.
    Console.WriteLine("Format specifier only for the Single and Double types:");
    Console.WriteLine(msgRoundTrip   + floatingVal.ToString("R", ci));
    Console.WriteLine();

// Use the format specifiers that are for integral or floating-point types.
    Console.WriteLine("Format specifiers for integral or floating-point types:");
    Console.WriteLine(msgCurrency    + floatingVal.ToString("C", ci));
    Console.WriteLine(msgScientific  + floatingVal.ToString("E", ci));
    Console.WriteLine(msgFixedPoint  + floatingVal.ToString("F", ci));
    Console.WriteLine(msgGeneral     + floatingVal.ToString("G", ci));
    Console.WriteLine(msgNumber      + floatingVal.ToString("N", ci));
    Console.WriteLine(msgPercent     + floatingVal.ToString("P", ci));
    Console.WriteLine();
    }
}
/*
This code example produces the following results:

Standard Numeric Format Specifiers:

Use ToString(String) and the current thread culture.

Culture:                  English (United States)
Integral value:           -12345
Floating-point value:     -1234.567

Format specifiers only for integral types:
(D) Decimal:. . . . . . . -12345
(X) Hexadecimal:. . . . . FFFFCFC7

Format specifier only for the Single and Double types:
(R) Round-trip: . . . . . -1234.567

Format specifiers for integral or floating-point types:
(C) Currency: . . . . . . ($1,234.57)
(E) Scientific: . . . . . -1.234567E+003
(F) Fixed point:. . . . . -1234.57
(G) General (default):. . -1234.567
(N) Number: . . . . . . . -1,234.57
(P) Percent:. . . . . . . -123,456.70 %

Use ToString(String, IFormatProvider) and a specified culture.

Culture:                  German (Germany)
Integral value:           -12345
Floating-point value:     -1234.567

Format specifiers only for integral types:
(D) Decimal:. . . . . . . -12345
(X) Hexadecimal:. . . . . FFFFCFC7

Format specifier only for the Single and Double types:
(R) Round-trip: . . . . . -1234,567

Format specifiers for integral or floating-point types:
(C) Currency: . . . . . . -1.234,57 euro
(E) Scientific: . . . . . -1,234567E+003
(F) Fixed point:. . . . . -1234,57
(G) General (default):. . -1234,567
(N) Number: . . . . . . . -1.234,57
(P) Percent:. . . . . . . -123.456,70%

*/

请参见
参考
NumberFormatInfo
概念
数字格式字符串
标准数字格式字符串输出示例
自定义数字格式字符串
其他资源
格式化类型
http://msdn.microsoft.com/zh-cn/dwhawy9k(VS.80).aspx
分享到:
评论

相关推荐

    printf格式控制符的完整格式

    `printf` 的格式化输出功能非常强大,它允许用户通过指定特定的格式字符串来控制输出数据的显示样式。本文将详细介绍 `printf` 格式控制符的完整格式及其各种用法。 #### 二、格式控制符的基本结构 `printf` 格式...

    printf格式控制符

    printf函数的核心部分是格式控制符,也就是在printf函数的字符串中用来规定输出格式的特殊符号。格式控制符的正确使用,可以让输出的结果达到预期的显示效果,例如控制显示宽度、精度和对齐方式等。在本文中,将详细...

    printf用法大全,C语言printf格式控制符一览表.docx

    - `format`: 是一个字符串,包含输出的格式控制符和文本。 - `...`: 表示可变参数列表,通常是一些变量或表达式,它们的值会被按照`format`指定的格式输出。 #### 三、printf函数的使用方法 **1. 输出纯文本** 最...

    C语言中printf格式

    在 C 语言中,printf 函数是一个非常重要的输出函数,它可以根据不同的格式化字符串来输出各种类型的数据。在本文中,我们将详细介绍 printf 函数的使用方法和格式化字符串的规定符。 一、printf 函数的基本用法 ...

    printf函数的格式字符g的用法1

    在C语言程序设计教学中,理解`printf`函数的各种格式字符是非常基础且重要的技能,掌握`%g`的用法可以帮助编写更加灵活和高效的输出代码。通过练习和实践,开发者可以更好地掌握这一特性,并在需要的时候灵活运用。

    S32K144使用printf格式化输出

    标题中的"S32K144使用printf格式化输出"涉及到的是在嵌入式系统开发中,如何在基于NXP S32K144微控制器的平台上实现标准C库中的`printf`函数功能,特别是在FreeRTOS实时操作系统下的应用。S32K144是一款高性能、低...

    printf格式

    printf 格式控制 printf 格式控制是 C 语言中用于输出数据的格式控制语句。格式控制的完整格式为:% - 0 m.n l 或 h 格式字符。下面对组成格式说明的各项加以说明: 1. %:表示格式说明的起始符号,不可缺少。 2....

    printf输出格式大全

    printf 函数调用的一般形式为:printf(“格式控制字符串”, 输出表列)其中格式控制字符串用于指定输出格式。格式控制串可由格式字符串和非格式字符串两种组成。格式字符串是以%开头的字符串,在%后面跟有各种格式...

    字符和浮点型的printf函数的各种格式控制符.jpg

    小数格式、指数格式和精简格式等等

    printf函数输出格式

    `printf`的格式控制字符串通常由一个百分号(%)开始,后面跟着一个或多个前导字符和一个格式字符。前导字符包括: 1. `-`:指定左对齐输出。如果不指定,输出默认右对齐。 2. `0`:指定在填充空位时使用0而不是...

    STM32串口绑定printf格式输出

    STM32串口绑定printf格式输出是指将STM32微控制器的USART串口绑定到C语言的标准库函数printf上,以实现格式化输出。这种方法可以将STM32的USART2绑定到C语言的标准库函数printf上,从而实现实时查看变量的值,非常...

    c语言printf输出格式汇总

    printf(“格式控制字符串”, 输出表列) 其中,格式控制字符串用于指定输出格式。格式控制串可由格式字符串和非格式字符串两种组成。格式字符串是以%开头的字符串,在%后面跟有各种格式字符,以说明输出数据的类型、...

    c语言printf()输出格式大全

    - 如果想输出字符 `%`, 则应该在格式控制字符串中使用连续两个 `%` 来表示。 - 例如: `printf("%f%%", 1.0/3);` 输出: `0.333333%`。 ### 总结 `printf()` 函数在 C 语言中的应用非常广泛,掌握好其格式化输出的...

    C语言中printf格式.doc

    特殊规定字符是 printf() 函数中的一些特殊字符,可以用来控制输出的格式和方式。这些字符包括: | 字符 | 作用 | | --- | --- | | \n | 换行 | | \f | 清屏并换页 | | \r | 回车 | | \t | Tab 符 | | \xhh | 表示...

    Printf输出格式.

    `printf`格式控制的完整格式为`%(flags)(width)(.prec)type`。其中: - **flags**:标志位,例如`+`、`0`等,用于控制输出格式。 - `+`:对于数值输出,在正数前添加正号。 - `#`:根据转换字符的不同具有不同的...

    cpp-C类型安全Python风格的Printf格式

    C类型安全Python风格的Printf格式`是一种面向C++开发者的先进格式化输出解决方案,旨在提供更安全、更灵活的替代传统`printf`的方式,通过借鉴Python的格式化字符串模型,实现了编译时类型安全和强大的格式控制功能...

    蓝桥杯单片机串口通信拼接字符串与变量

    %bu是printf函数的格式控制字符串中的占位符, 用于指示需要输出一个unsigned char类型的整数。 在基础知识方面, unsigned char类型是一种无符号字符类型,它可以存储0到255之间的整数。 它通常用于表示二进制...

    C语言printf与scanf讲解.pdf

    在本文中,我们将深入讲解scanf函数的使用,特别是它的格式控制字符串。 scanf函数的格式控制字符串通常以百分号(%)开头,后面跟着一个类型字符,例如d、i、o、u、x、X、f、e、E、g、G、c、s等。其中,s类型字符...

Global site tag (gtag.js) - Google Analytics