首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >C++ atof/_wtof,舍入误差

C++ atof/_wtof,舍入误差
EN

Stack Overflow用户
提问于 2017-02-09 13:38:26
回答 1查看 861关注 0票数 0

我有一个CString变量,我需要将它转换为double

代码语言:javascript
运行
复制
CString sVal(_T("    4.2"));
double dbl2 = _wtof(sVal);

我得到了dbl2 = 4.0000,而不是4.2。舍入的原因是什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-02-10 11:20:21

小数点是本地化的“项”之一。

警告!下面的代码没有针对许多后续转换进行优化

代码语言:javascript
运行
复制
#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

请参阅http://www.cplusplus.com/reference/clocale/setlocale/

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42138224

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档