【发布时间】:2017-02-09 13:38:26
【问题描述】:
我有一个 CString 变量,我需要将其转换为双精度变量
CString sVal(_T(" 4.2"));
double dbl2 = _wtof(sVal);
我得到 dbl2 = 4.0000 而不是 4.2。四舍五入的原因可能是什么?
【问题讨论】:
-
你能否展示一个完整的主程序,包括这个示例(并首先检查它是否显示问题)。理想情况下,您应该将其转换为使用标准
std::wstring,但如果不是,我会更改标签以包含特定于 MS 的内容。 -
您在欧洲大陆吗? (换句话说,您的机器是否设置了小数点分隔符
,?)它可能正在执行特定于语言环境的转换。 -
俄罗斯,setlocale(LC_ALL, ".1251");你是对的,替换“。”到“,”消除了问题
-
抱歉,俄罗斯确实是“欧洲大陆”,但我不知道你用什么小数分隔符。
-
"替换 '.'到 ',' 消除了问题” - 不,它没有。它只是用另一个问题代替了它。如果你在美国英语系统上运行它,你又要解决一个错误。
标签: c++ mfc rounding c-strings atof