StrToFloatDef - C++ Builder

C++ Builder 參考手冊 ? System::Sysutils ? StrToFloatDef


字符串轉(zhuǎn)浮點(diǎn)數(shù)值

頭文件:#include <System.SysUtils.hpp>
命名空間:System::Sysutils
函數(shù)原型:

System::Extended __fastcall StrToFloatDef(const System::UnicodeString S, const System::Extended Default);
System::Extended __fastcall StrToFloatDef(const System::UnicodeString S, const System::Extended Default, const TFormatSettings &AFormatSettings);

參數(shù):

  • S:字符串罩引;
  • Default:默認(rèn)值耗式;
  • AFormatSettings:地區(qū)格式昔馋;

返回值:

  • 浮點(diǎn)類型數(shù)值接校,如果轉(zhuǎn)換失敗猛频,函數(shù)返回參數(shù) Default 的值;
  • 如果沒有 AFormatSettings 參數(shù),小數(shù)點(diǎn)使用全局變量 FormatSettings.DecimalSeparator伦乔,
    不同國家或地區(qū)的小數(shù)點(diǎn)也不同厉亏,例如:中國和美國使用小圓點(diǎn) '.',法國和越南使用逗號 ','烈和;
    如果 FormatSettings 被修改爱只,可以用 Sysutils::GetFormatSettings(); 恢復(fù)默認(rèn)值為本地格式;
  • 如果有 AFormatSettings 參數(shù)招刹,小數(shù)點(diǎn)使用 AFormatSettings.DecimalSeparator恬试;
  • 函數(shù) StrToFloat、StrToFloatDef 和 TryStrToFloat 的區(qū)別:
    ? StrToFloat 轉(zhuǎn)換失敗拋出異常疯暑;
    ? StrToFloatDef 轉(zhuǎn)換失敗返回默認(rèn)值训柴;
    ? TryStrToFloat 轉(zhuǎn)換結(jié)果通過參數(shù)返回,函數(shù)返回值返回是否轉(zhuǎn)換成功妇拯;
  • 沒有 AFormatSettings 參數(shù)的 CurrToStrF 函數(shù)不是線程安全的幻馁,因?yàn)槭褂昧巳肿兞?FormatSettings 作為默認(rèn)的地區(qū)格式;帶有 AFormatSettings 參數(shù)的函數(shù)是線程安全的越锈。

例:

void TForm1::ShowFloat(double lfValue) // 顯示浮點(diǎn)數(shù)仗嗦,不使用地區(qū)格式
{
    UnicodeString s;
    Memo1->Lines->Add(s.sprintf(L"%f",lfValue)); // 不使用地區(qū)格式
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
    ShowFloat(StrToFloatDef(L"1234.56789", 0)); // 當(dāng)前地區(qū) (中國) 小數(shù)點(diǎn)必須用 '.'
    ShowFloat(StrToFloatDef(L"1234,56789", 0)); // 小數(shù)點(diǎn)不能用其他字符

    TFormatSettings fs;
//  fs = TFormatSettings::Create(L"vi"); // 越南
    fs = TFormatSettings::Create(L"fr"); // 法國
    ShowFloat(StrToFloatDef(L"1234,56789", 0, fs)); // 法國和越南小數(shù)點(diǎn)必須用逗號 ','
    ShowFloat(StrToFloatDef(L"1234.56789", 0, fs)); // 如果用了小圓點(diǎn) '.' 就無法識別甘凭,返回默認(rèn)值:0

    fs = TFormatSettings::Create(L"en_US");   // 美國
    ShowFloat(StrToFloatDef(L"1234.56789", 0, fs)); // 美國的小數(shù)點(diǎn)用小圓點(diǎn)和中國的一樣 '.'
    ShowFloat(StrToFloatDef(L"1234,56789", 0, fs)); // 小數(shù)點(diǎn)不能用其他字符

    Sysutils::FormatSettings.DecimalSeparator = L','; // 把默認(rèn)的小數(shù)點(diǎn)改成逗號 ','
    ShowFloat(StrToFloatDef(L"1234,56789", 0)); // 默認(rèn)的小數(shù)點(diǎn)需要用逗號 ','
    ShowFloat(StrToFloatDef(L"1234.56789", 0)); // 這時(shí)候就不識別小圓點(diǎn) '.' 返回默認(rèn)值:0

    Sysutils::GetFormatSettings(); // 格式恢復(fù)默認(rèn)值 - 當(dāng)前地區(qū) (中國) 的格式
    ShowFloat(StrToFloatDef(L"1234.56789", 0)); // 當(dāng)前地區(qū) (中國) 小數(shù)點(diǎn)必須用 '.'
    ShowFloat(StrToFloatDef(L"1234,56789", 0)); // 小數(shù)點(diǎn)不能用其他字符
}

運(yùn)行結(jié)果:

運(yùn)行結(jié)果

相關(guān):


C++ Builder 參考手冊 ? System::Sysutils ? StrToFloatDef

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市蝠咆,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌北滥,老刑警劉巖再芋,帶你破解...
    沈念sama閱讀 216,470評論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件济赎,死亡現(xiàn)場離奇詭異,居然都是意外死亡构捡,警方通過查閱死者的電腦和手機(jī)勾徽,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,393評論 3 392
  • 文/潘曉璐 我一進(jìn)店門统扳,熙熙樓的掌柜王于貴愁眉苦臉地迎上來咒钟,“玉大人朱嘴,你說我怎么就攤上這事∥谖簦” “怎么了帚湘?”我有些...
    開封第一講書人閱讀 162,577評論 0 353
  • 文/不壞的土叔 我叫張陵大诸,是天一觀的道長。 經(jīng)常有香客問我资柔,道長,這世上最難降的妖魔是什么辙芍? 我笑而不...
    開封第一講書人閱讀 58,176評論 1 292
  • 正文 為了忘掉前任故硅,我火速辦了婚禮吃衅,結(jié)果婚禮上腾誉,老公的妹妹穿的比我還像新娘峻呕。我一直安慰自己瘦癌,他們只是感情好跷敬,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,189評論 6 388
  • 文/花漫 我一把揭開白布妄帘。 她就那樣靜靜地躺著抡驼,像睡著了一般肿仑。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上馏锡,一...
    開封第一講書人閱讀 51,155評論 1 299
  • 那天杯道,我揣著相機(jī)與錄音责蝠,去河邊找鬼霜医。 笑死,一個(gè)胖子當(dāng)著我的面吹牛署海,可吹牛的內(nèi)容都是我干的医男。 我是一名探鬼主播,決...
    沈念sama閱讀 40,041評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼趾代,長吁一口氣:“原來是場噩夢啊……” “哼撒强!你這毒婦竟也來了飘哨?” 一聲冷哼從身側(cè)響起琐凭,我...
    開封第一講書人閱讀 38,903評論 0 274
  • 序言:老撾萬榮一對情侶失蹤统屈,失蹤者是張志新(化名)和其女友劉穎愁憔,沒想到半個(gè)月后吨掌,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,319評論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡窿侈,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,539評論 2 332
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了肛著。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片策泣。...
    茶點(diǎn)故事閱讀 39,703評論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡统抬,死狀恐怖危队,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情金麸,我是刑警寧澤挥下,帶...
    沈念sama閱讀 35,417評論 5 343
  • 正文 年R本政府宣布,位于F島的核電站现斋,受9級特大地震影響庄蹋,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜迷雪,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,013評論 3 325
  • 文/蒙蒙 一限书、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧章咧,春花似錦倦西、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,664評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至误澳,卻和暖如春耻矮,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背忆谓。 一陣腳步聲響...
    開封第一講書人閱讀 32,818評論 1 269
  • 我被黑心中介騙來泰國打工裆装, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人倡缠。 一個(gè)月前我還...
    沈念sama閱讀 47,711評論 2 368
  • 正文 我出身青樓,卻偏偏與公主長得像采桃,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個(gè)殘疾皇子衔蹲,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,601評論 2 353

推薦閱讀更多精彩內(nèi)容