C++ Builder 参考手册 ➙ System::Sysutils ➙ FloatToStrF
浮点型数值转字符串,使用浮点数格式
头文件:#include <System.SysUtils.hpp>
命名空间:System::Sysutils
函数原型:
System::UnicodeString __fastcall FloatToStrF(
System::Extended Value,
TFloatFormat Format,
int Precision,
int Digits);
System::UnicodeString __fastcall FloatToStrF(
System::Extended Value,
TFloatFormat Format,
int Precision,
int Digits,
const TFormatSettings &AFormatSettings);
参数:
- Value:浮点型变量;
- Format:浮点数格式:
• ffGeneral:生成尽可能短的字符串,忽略 Digits 参数;
• ffExponent:使用科学计数法,Digits 为指数的位数,不是小数点后保留的位数;
• ffFixed:小数点后保留 Digits 位;
• ffNumber:小数点后保留 Digits 位,并且整数部使用千位分隔符;
• ffCurrency:使用货币型字符串,小数点后保留 Digits 位; - Precision:精度,保留有效数字的位数;
- Digits:根据 Format 参数使用;
- AFormatSettings:地区格式;
返回值:
- 参数 Value 转为字符串;
- 地区格式:这个函数使用了地区格式的 DecimalSeparator 作为小数点、ThousandSeparator 作为千位分隔符、CurrencyString 作为货币符号、CurrencyFormat 控制货币符号放在数字前面或是后面、NegCurrFormat 作为货币负数的格式,不同的地区可能会使用不同的字符当做小数点和千位分隔符,中国和大多数国家一样使用小圆点作为小数点、逗号作为千位分隔符,但是有的国家 - 例如法国:使用逗号当做小数点、空格当做千位分隔符,如果程序在法国和越南等国家的电脑上运行,默认情况所有的小数点都会使用逗号的,包括浮点数,不仅仅是货币型,程序国际化时要特别注意;
- 如果没有 AFormatSettings 参数,使用当前地区格式;
- 如果有 AFormatSettings 参数,使用这个参数的格式,并且使用这个参数可以随意设定一个字符当做小数点;
- 可以使用全局变量 System::Sysutils::FormatSettings 修改默认的格式;
- 没有 AFormatSettings 参数的函数不是线程安全的,因为使用了全局变量作为默认的地区格式;带有 AFormatSettings 参数的函数是线程安全的。
例1:
void __fastcall TForm1::Button1Click(TObject *Sender)
{
double Val = 12.3456789;
Memo1->Lines->Add(Sysutils::FloatToStrF(Val, ffGeneral , 8, 3));
Memo1->Lines->Add(Sysutils::FloatToStrF(Val, ffExponent, 8, 3));
Memo1->Lines->Add(Sysutils::FloatToStrF(Val, ffFixed , 8, 3));
Memo1->Lines->Add(Sysutils::FloatToStrF(Val, ffNumber , 8, 3));
Memo1->Lines->Add(Sysutils::FloatToStrF(Val, ffCurrency, 8, 3));
Memo1->Lines->Add(L"--------");
Memo1->Lines->Add(Sysutils::FloatToStrF(Val, ffNumber , 8, 3, TFormatSettings::Create(L"en_US"))); // 美国数字
Memo1->Lines->Add(Sysutils::FloatToStrF(Val, ffCurrency, 8, 3, TFormatSettings::Create(L"en_US"))); // 美国货币
Memo1->Lines->Add(L"--------");
Memo1->Lines->Add(Sysutils::FloatToStrF(Val, ffNumber , 8, 3, TFormatSettings::Create(L"fr_FR"))); // 法国数字
Memo1->Lines->Add(Sysutils::FloatToStrF(Val, ffCurrency, 8, 3, TFormatSettings::Create(L"fr_FR"))); // 法国货币
Memo1->Lines->Add(L"--------");
TFormatSettings fs = TFormatSettings::Create();
fs.CurrencyString = L"@#"; // 货币符号
fs.ThousandSeparator = L'\''; // 千位分隔符
fs.DecimalSeparator = L','; // 小数点
Memo1->Lines->Add(Sysutils::FloatToStrF(Val, ffCurrency, 8, 3, fs)); // 自定义的货币
}
运行结果:
例2:把例1的数值改成 double Val = 12345.6789;
例3:把例1的数值改成 double Val = 0.00123456789;
相关:
- System::Sysutils::FormatSettings
- System::Sysutils::TFormatSettings
- System::Sysutils::StrToBool
- System::Sysutils::StrToBoolDef
- System::Sysutils::TryStrToBool
- System::Sysutils::BoolToStr
- System::Sysutils::CurrToStr
- System::Sysutils::CurrToStrF
- System::Sysutils::DateTimeToStr
- System::Sysutils::DateTimeToString
- System::Sysutils::DateToStr
- System::Sysutils::FloatToStr
- System::Sysutils::FloatToStrF
- System::Sysutils::GUIDToString
- System::Sysutils::IntToStr
- System::Sysutils::IntToHex
- System::Sysutils::TimeToStr
- System::Sysutils::UIntToStr
- System::Sysutils
- System::Currency
- System
- std::itoa, std::_itoa, std::_itot, std::_itow
- std::ltoa, std::_ltoa, std::_ltot, std::_ltow
- std::ultoa, std::_ultoa, std::_ultot, std::_ultow
- std::_i64toa, std::_i64tot, std::_i64tow
- std::_ui64toa, std::_ui64tot, std::_ui64tow
- std::ecvt, std::_ecvt
- std::fcvt, std::_fcvt
- std::gcvt, std::_gcvt
- <cstdlib>
C++ Builder 参考手册 ➙ System::Sysutils ➙ FloatToStrF