主页C++ Builder 资料C++ Builder 参考手册System 字符串FormatFloat
C++ Builder 串口控件
C++ Builder 编程技巧
C++ Builder 操作指南
C++ Builder 参考手册
基础知识
cfloat 浮点数
cmath 数学函数
cstdlib 标准库函数
System 字符串
 • UnicodeString
 • UTF8String
 • TStringList
 • TStrings
 • String
 • AnsiString
 • AnsiStringBase
 • AnsiStringT
 • RawByteString
 • UCS4String
 • WideString
 • EnumToStr
 • FloatToStr
 • FloatToStrF
 • FormatFloat
 • IntToStr
 • UIntToStr
 • IntToHex
 • StrToEnum
 • StrToFloat
 • StrToFloatDef
 • StrToInt
 • StrToIntDef
 • StrToInt64
 • StrToInt64Def
 • StrToUInt64
 • StrToUInt64Def
 • TFloatFormat
 • GetUnicodeCategory
 • IMLangCodePages
 • StringReplace
System 日期和时间
System.Math.hpp 数学函数
其他数据类型
VCL 基础类
VCL 应用程序
Pictures 图片
Graphics 绘图
Additional 控件
System 控件
A ~ Z 字母顺序排列的目录
网友留言/技术支持
FormatFloat - 浮点数转字符串,按照含有控制符的格式字符串的格式

函数原型:

UnicodeString __fastcall FormatFloat(const UnicodeString Format, Extended Value);
UnicodeString __fastcall FormatFloat(const UnicodeString Format, Extended Value, const TFormatSettings &AFormatSettings);

 

头文件:

#include <System.SysUtils.hpp> (XE2 之后),#include <SysUtils.hpp> (XE 之前)

 

参数:

Format: 含有控制符的格式字符串,查看格式控制符表格请点击这里
Value: 为 Extended (即 long double) 类型,可以使用 float, double 和 long double 类型的浮点数。
AFormatSettings: TFormatSettings 类型转换字符串的格式,如果没有提供这个参数,会使用全局对象 FormatSettings 作为这个格式参数。

没有 AFormatSettings 参数的函数使用了全局对象 FormatSettings,不是线程安全的;
含有 AFormatSettings 参数的函数,没有使用全局对象,是线程安全的。

 

返回值:

转换之后的字符串,请参考 TFloatFormat 类型的详细说明。
如果 Value 等于 NAN,返回字符串为 L"NAN",
如果 Value 等于 +∞,返回字符串为 L"INF",
如果 Value 等于 -∞,返回字符串为 L"-INF"。

 

格式控制符:

控制符 说明
0 这个位置必须输出数字,如果没有输出,用 0 填补。
# 这个位置如果没有数字输出就不输出,不用任何字符填补。
. 输出小数点。只有在格式字符串里面第一个出现的 '.' 才会输出小数点,其他的 '.' 被忽略。
小数点采用 AFormatSettings 参数或 FormatSettings 全局对象里面的 DecimalSeparator 字符,不同地区会使用不同的字符
, 使用千分位分割符。如果格式字符串里面包含一个或多个 ',' 输出会使用千分位分割符。
分割符采用 AFormatSettings 参数或 FormatSettings 全局对象里面的 ThousandSeparator 字符,不同地区会使用不同的字符
E+ 使用科学计数法。如果格式字符串里面包含 "E+", "E-", "e+", 或 "e-",输出会使用科学计数法。
"E+", "E-", "e+", 或 "e-" 的后面可以紧跟着最多 4 个字符 '0',表示指数至少要输出的位数。
"E+" 和 "e+" 指数为正数和负数都输出符号 '+' 或 '-',
"E-" 和 "e-" 指数只有是负数的时候输出符号 '-',正数不输出符号。
'xx'/"xx" 单引号和双引号里面的文字直接原样输出。
; 如果格式字符串里面包含了分号 ';',说明正数、负数和零采用不同的格式,分号 ';' 是分割正数、负数和零的格式之间的分割符

 

例:

格式化浮点数 double x = 12345.6789; double x = 0; double x = -12345.6789;
Edit1->Text = FormatFloat(L"0.00" , x); 12345.68 0.00 -12345.68
Edit2->Text = FormatFloat(L"0.000" , x); 12345.679 0.000 -12345.679
Edit3->Text = FormatFloat(L"#,0.00" , x); 12,345.68 0.00 -12,345.68
Edit4->Text = FormatFloat(L"#,##0.00" , x); 12,345.68 0.00 -12,345.68
Edit5->Text = FormatFloat(L"000000.000", x); 012345.679 000000.000 -012345.67
Edit6->Text = FormatFloat(L"000,000.000", x); 012,345.679 000,000.000 -012,345.679
Edit7->Text = FormatFloat(L"0.000E+00", x); 1.235E+04 0.000E+00 -1.235E+04
Edit8->Text = FormatFloat(L"'正'0.00;'负'0.00;零", x); 正12345.68 负12345.68
Edit9->Text = FormatFloat(L"0" , x); 12346 0 -12346
EditA->Text = FormatFloat(L"0.###" , x); 12345.679 0 -12345.679
EditB->Text = FormatFloat(L"0.######" , x); 12345.6789 0 -12345.6789
EditC->Text = FormatFloat(L"0.000###" , x); 12345.6789 0.000 -12345.6789
EditD->Text = FormatFloat(L"0.000000" , x); 12345.678900 0.000000 -12345.678900

 

相关链接:

StrToFloatStrToFloatDefFloatToStrFloatToStrF
atof_atoldstrtodstrtofstrtoldecvtfcvtgcvt

◤上一页:FloatToStrF下一页:IntToStr

C++ 爱好者 -- Victor Chen 的个人网站 www.cppfans.com 辽ICP备11016859号