我在将字符串转换为双精度浮点数时遇到了问题。我得到的字符串包含纬度/经度坐标,格式为
我首先调用我的函数
我正在使用以下代码将我的
在这种情况下输出会产生以下结果:
您可能已经注意到,正确的数值应该是
33.9425/N 118.4081/W
。我首先调用我的函数
trimLastChar(std::string& input)
两次,它将删除北、南、东、西字符,然后是斜杠。这个函数正确地返回33.9425
和118.4081
作为std::string
。我正在使用以下代码将我的
std::string
转换为double
...但问题是,转换会丢失精度--我怀疑它被四舍五入了?// Location In String is what trimLastChar returns
std::stringstream stream(locationInString);
std::cout << "DEBUG: before: " << locationInString << " ";
// output is a double* output = new double passed by reference to my function
stream >> output;
std::cout << output << std::endl;
在这种情况下输出会产生以下结果:
33.9425
118.408
您可能已经注意到,正确的数值应该是
118.4081
,但其中的1缺失了... 你有什么想法可以修复它吗?或者更重要的是,为什么会出现这种情况呢?