我有一个CString变量,我需要将它转换为double
CString sVal(_T(" 4.2"));
double dbl2 = _wtof(sVal);
我得到了dbl2 = 4.0000,而不是4.2。舍入的原因是什么?
发布于 2017-02-10 11:20:21
小数点是本地化的“项”之一。
警告!下面的代码没有针对许多后续转换进行优化
#include <locale.h>
#include <string>
...
CString sVal(_T(" 4.2"));
std::string currentLocale = setlocale(LC_NUMERIC, NULL); //retrive current locale
setlocale(LC_NUMERIC, "C"); //change numeric locale to C, now decimal separator is '.'
double dbl2 = _wtof(sVal);
setlocale(LC_NUMERIC, currentLocale.c_str()); //return to original locale
https://stackoverflow.com/questions/42138224
复制相似问题