函数原型:
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 |
相关链接:
• StrToFloat • StrToFloatDef • FloatToStr • FloatToStrF
• atof • _atold • strtod • strtof • strtold • ecvt • fcvt • gcvt
|