一个常见的问题,可能是我错了,但谷歌最后两个小时没有给我任何答案, 问题是如何在不使用c ++中的std:library的情况下将CString转换为float。
我尝试使用 wcstod()函数但是,此函数的行为非常不同。 请找到以下代码,
CString Tempconvert = "32.001";
double TempConvertedValue = wcstod(Tempconvert,NULL);
所以,最后 TempConvertedValue 的值应为32.001。但我得到 TempConvertedValue = 32.000999999999998 请提供任何转换帮助 字符串“32.001”仅浮动32.001。不使用std:library。
答案 0 :(得分:1)
您看到的是浮点内部表示的示例。您可以查看here以查看内存中存储的双倍内容。另请参阅this question以了解调试器为何显示此值。
使用此存储格式,无法准确表示十进制数。这就是为什么货币计算通常使用特殊的十进制类型,它们可以是自定义的,也可以是编程语言的一部分。