Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/142.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ CString到Float转换_C++_Visual C++_Mfc_Type Conversion - Fatal编程技术网

C++ CString到Float转换

C++ CString到Float转换,c++,visual-c++,mfc,type-conversion,C++,Visual C++,Mfc,Type Conversion,一个常见的问题,可能是我在这一点上错了,但在谷歌上的最后两个小时没有给我任何答案, 问题是如何在C++中不使用STD:Labor将CSTROM转换为浮点。p> 我尝试使用wcstod()函数,但该函数的行为非常不同。 请查找以下代码 CString Tempconvert = "32.001"; double TempConvertedValue = wcstod(Tempconvert,NULL); 因此,最后TempConvertedValue的值应为32.001。但是我得到了TempCo

一个常见的问题,可能是我在这一点上错了,但在谷歌上的最后两个小时没有给我任何答案, 问题是如何在C++中不使用STD:Labor将CSTROM转换为浮点。p> 我尝试使用wcstod()函数,但该函数的行为非常不同。 请查找以下代码

CString Tempconvert = "32.001";
double TempConvertedValue = wcstod(Tempconvert,NULL);
因此,最后TempConvertedValue的值应为32.001。但是我得到了TempConvertedValue=32.00099999998 请提供我任何转换的帮助
字符串“32.001”仅用于浮动32.001。不使用std:library。

您看到的是浮点内部表示的示例。您可以看看double是如何存储在内存中的。另请参阅以了解调试器显示此值的原因


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

看起来某个地方有一个浮点(而不是双精度)。浮点数不能精确表示32.001,但双精度可以。wcstod返回一个双tho,因此问题不应该存在。如何输出值?std库有什么问题?@JoelKlinghed这不是真的,double不能准确地表示浮点值,因为它使用与浮点相同的编码方式,但具有更多的位,因此它可以容纳更大的值和更高的精度。@EricFortin,true,确实是一个错误的选择。我的意思是:浮动f=32.001f;双d=32.001;printf(“%f%f”,f,d);将打印“32.000999 32.001000”ie double的精度足以保持32。001@JoelKlinghed首先感谢回复。32.001是一个双倍值。我只是想把字符串转换成double,但我并没有理解“如何输出值?”。