TryStrToFloat - C++ Builder

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


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

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

bool __fastcall TryStrToFloat(const System::UnicodeString S, System::Extended &Value);
bool __fastcall TryStrToFloat(const System::UnicodeString S, System::Extended &Value, const TFormatSettings &AFormatSettings);
bool __fastcall TryStrToFloat(const System::UnicodeString S, double &Value);
bool __fastcall TryStrToFloat(const System::UnicodeString S, double &Value, const TFormatSettings &AFormatSettings);
bool __fastcall TryStrToFloat(const System::UnicodeString S, float &Value);
bool __fastcall TryStrToFloat(const System::UnicodeString S, float &Value, const TFormatSettings &AFormatSettings);

參數(shù):

  • S:字符串忧饭;
  • Value:輸出浮點數(shù)轉(zhuǎn)換結(jié)果;
  • AFormatSettings:地區(qū)格式;

返回值:

  • true:轉(zhuǎn)換成功,通過參數(shù) Value 返回浮點類型數(shù)值轉(zhuǎn)換結(jié)果纽什;
  • false:轉(zhuǎn)換失敾傩馈昭躺;
  • 如果沒有 AFormatSettings 參數(shù),小數(shù)點使用全局變量 FormatSettings.DecimalSeparator幔翰,
    不同國家或地區(qū)的小數(shù)點也不同漩氨,例如:中國和美國使用小圓點 '.',法國和越南使用逗號 ','遗增;
    如果 FormatSettings 被修改叫惊,可以用 Sysutils::GetFormatSettings(); 恢復(fù)默認值為本地格式;
  • 如果有 AFormatSettings 參數(shù)做修,小數(shù)點使用 AFormatSettings.DecimalSeparator霍狰;
  • 函數(shù) StrToFloatStrToFloatDef 和 TryStrToFloat 的區(qū)別:
    ? StrToFloat 轉(zhuǎn)換失敗拋出 EConvertError 異常缓待;
    ? StrToFloatDef 轉(zhuǎn)換失敗返回默認值蚓耽;
    ? TryStrToFloat 轉(zhuǎn)換結(jié)果通過參數(shù)返回,函數(shù)返回值返回是否轉(zhuǎn)換成功旋炒;
  • 沒有 AFormatSettings 參數(shù)的 CurrToStrF 函數(shù)不是線程安全的步悠,因為使用了全局變量 FormatSettings 作為默認的地區(qū)格式;帶有 AFormatSettings 參數(shù)的函數(shù)是線程安全的瘫镇。

例子:

void __fastcall TForm1::Button1Click(TObject *Sender)
{
    double val;
    if(TryStrToFloat(L"1234.56789",val)) // 當(dāng)前地區(qū) (中國)
        ShowFloat(val);
    else
        Memo1->Lines->Add(L"轉(zhuǎn)換失敗");

    TFormatSettings fs;
//  fs = TFormatSettings::Create(L"vi"); // 越南
    fs = TFormatSettings::Create(L"fr"); // 法國

    if(TryStrToFloat(L"1234.56789", val, fs)) // 法國和越南小數(shù)點必須用逗號 ','
        ShowFloat(val);
    else
        Memo1->Lines->Add(L"轉(zhuǎn)換失敗");

    if(TryStrToFloat(L"1234,56789", val, fs)) // 法國和越南小數(shù)點必須用逗號 ','
        ShowFloat(val);
    else
        Memo1->Lines->Add(L"轉(zhuǎn)換失敗");

    fs = TFormatSettings::Create(L"en_US");   // 美國
    if(TryStrToFloat(L"1234.56789", val, fs)) // 美國的小數(shù)點用小圓點和中國的一樣 '.'
        ShowFloat(val);
    else
        Memo1->Lines->Add(L"轉(zhuǎn)換失敗");

    Sysutils::FormatSettings.DecimalSeparator = L','; // 把默認的小數(shù)點改成逗號 ','
    if(TryStrToFloat(L"1234,56789", val)) // 默認的小數(shù)點需要用逗號 ','
        ShowFloat(val);
    else
        Memo1->Lines->Add(L"轉(zhuǎn)換失敗");

    Sysutils::GetFormatSettings(); // 格式恢復(fù)默認值 - 當(dāng)前地區(qū) (中國) 的格式
    if(TryStrToFloat(L"1234.56789",val)) // 當(dāng)前地區(qū) (中國)
        ShowFloat(val);
    else
        Memo1->Lines->Add(L"轉(zhuǎn)換失敗");
}

運行結(jié)果:

運行結(jié)果

相關(guān):


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

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末鼎兽,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子铣除,更是在濱河造成了極大的恐慌谚咬,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,948評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件尚粘,死亡現(xiàn)場離奇詭異择卦,居然都是意外死亡,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,371評論 3 385
  • 文/潘曉璐 我一進店門秉继,熙熙樓的掌柜王于貴愁眉苦臉地迎上來祈噪,“玉大人,你說我怎么就攤上這事尚辑〖穑” “怎么了?”我有些...
    開封第一講書人閱讀 157,490評論 0 348
  • 文/不壞的土叔 我叫張陵杠茬,是天一觀的道長月褥。 經(jīng)常有香客問我,道長瓢喉,這世上最難降的妖魔是什么宁赤? 我笑而不...
    開封第一講書人閱讀 56,521評論 1 284
  • 正文 為了忘掉前任,我火速辦了婚禮灯荧,結(jié)果婚禮上礁击,老公的妹妹穿的比我還像新娘。我一直安慰自己逗载,他們只是感情好哆窿,可當(dāng)我...
    茶點故事閱讀 65,627評論 6 386
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著厉斟,像睡著了一般挚躯。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上擦秽,一...
    開封第一講書人閱讀 49,842評論 1 290
  • 那天码荔,我揣著相機與錄音,去河邊找鬼感挥。 笑死缩搅,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的触幼。 我是一名探鬼主播硼瓣,決...
    沈念sama閱讀 38,997評論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼置谦!你這毒婦竟也來了堂鲤?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,741評論 0 268
  • 序言:老撾萬榮一對情侶失蹤媒峡,失蹤者是張志新(化名)和其女友劉穎瘟栖,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體谅阿,經(jīng)...
    沈念sama閱讀 44,203評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡半哟,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,534評論 2 327
  • 正文 我和宋清朗相戀三年酬滤,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片镜沽。...
    茶點故事閱讀 38,673評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡敏晤,死狀恐怖贱田,靈堂內(nèi)的尸體忽然破棺而出缅茉,到底是詐尸還是另有隱情,我是刑警寧澤男摧,帶...
    沈念sama閱讀 34,339評論 4 330
  • 正文 年R本政府宣布蔬墩,位于F島的核電站,受9級特大地震影響耗拓,放射性物質(zhì)發(fā)生泄漏拇颅。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,955評論 3 313
  • 文/蒙蒙 一乔询、第九天 我趴在偏房一處隱蔽的房頂上張望樟插。 院中可真熱鬧,春花似錦竿刁、人聲如沸黄锤。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,770評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽鸵熟。三九已至,卻和暖如春负甸,著一層夾襖步出監(jiān)牢的瞬間流强,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,000評論 1 266
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人三娩。 一個月前我還...
    沈念sama閱讀 46,394評論 2 360
  • 正文 我出身青樓褒链,卻偏偏與公主長得像,于是被迫代替她去往敵國和親霜运。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,562評論 2 349

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