字串 "3.14" 既可代表 float 也可代表 double,二者在共同精度範圍內的文本表示完全相同。
float 範圍(約 ±3.4e38)或精度超出 float 有效位數(約 7 位十進位數字),則可推斷為 double。"1.23456789012345" 明顯超過 float 精度,應視為 double。double 效能損失可忽略,避免精度陷阱。float 再序列化,接收端按 float 反序列化,接受精度損失。CString str = "3.1415926535";
double d = _ttof(str); // 或 atof, strtod
float f = (float)d; // 截斷精度
// 無法從 str 反推原始型別
不要試圖從字串「反推」型別,應在資料產生端就固定好型別契約。