c++ - CString 到 Float 转换

标签 c++ visual-c++ mfc type-conversion

一个常见的问题,可能是我在这一点上错了,但谷歌上的最后两个小时没有给我任何答案, 问题是如何在不使用 c++ 中的 std: 库的情况下将 CString 转换为 float 。

我尝试使用 wcstod() 函数,但是这个函数的行为非常不同。 请找到以下代码,

CString Tempconvert = "32.001";
double TempConvertedValue = wcstod(Tempconvert,NULL);

所以,最后 TempConvertedValue 的值应该是 32.001。但我得到 TempConvertedValue = 32.000999999999998 请给我任何转换的帮助 字符串“32.001”仅 float 32.001。不使用 std: 库。

最佳答案

您看到的是浮点内部表示的示例。你可以看看here查看 double 如何存储在内存中。另见 this question了解为什么调试器会向您显示此值。

使用这种存储格式,不可能精确地表示十进制数。这就是货币计算通常使用自定义或编程语言的一部分的特殊小数类型的原因。

关于c++ - CString 到 Float 转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20996130/

相关文章:

C++ 模板特化思考

c++ - 使用 -g 标志编译带有 makefile 的单个 c++ 文件不起作用

c++ - 从多个表中读取数据的最佳方法

c++ - 在使用 __interface 关键字时,如何使编译器为定义方法体的类发出错误?

windows - 如何使用 DvbSiparser.h 在 vc++ 中解析 mpeg2 TS?

c# - 将 C++ Hwnd 传递给 C# dll

python - 球体表面点的均匀分布?

c++ - 创建一个库?

c++ - 考虑leap年,向COledateTime添加年份的正确方法是什么?

c++ - Windows 8 和 CListCtrl