Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.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++中从一个字符串连接到一个字符串时丢失精确性 免责声明:我是一个新的C++程序员,但我已经读了很多关于浮点数字等等,以及一些数字是如何不能正确存储的。在我的许多谷歌搜索中,我都找不到任何与这个问题相关的东西_C++_String_Double_Concatenation - Fatal编程技术网

在C++中从一个字符串连接到一个字符串时丢失精确性 免责声明:我是一个新的C++程序员,但我已经读了很多关于浮点数字等等,以及一些数字是如何不能正确存储的。在我的许多谷歌搜索中,我都找不到任何与这个问题相关的东西

在C++中从一个字符串连接到一个字符串时丢失精确性 免责声明:我是一个新的C++程序员,但我已经读了很多关于浮点数字等等,以及一些数字是如何不能正确存储的。在我的许多谷歌搜索中,我都找不到任何与这个问题相关的东西,c++,string,double,concatenation,C++,String,Double,Concatenation,好的,基本上就是标题所说的,当我把两个双变量连接成一个字符串时,它们在每个变量的末尾都会掉一个小数点。我要做的是让用户输入两个存储为双精度的数字,以便进行一些计算,但稍后在程序中,我需要将这两个数字放在一个字符串中,以便我可以在已加载值的数组中搜索它们。当这些数字被连接成一个字符串时,它们会删除两个值中的最后一个数字,这会中断搜索。我做了一些调试来查找这个问题 以下是我的变量在被用户赋值后的读数: 用户1=43.5803481 user2=-116.7406331 到目前为止,这些值都很好,下面

好的,基本上就是标题所说的,当我把两个双变量连接成一个字符串时,它们在每个变量的末尾都会掉一个小数点。我要做的是让用户输入两个存储为双精度的数字,以便进行一些计算,但稍后在程序中,我需要将这两个数字放在一个字符串中,以便我可以在已加载值的数组中搜索它们。当这些数字被连接成一个字符串时,它们会删除两个值中的最后一个数字,这会中断搜索。我做了一些调试来查找这个问题

以下是我的变量在被用户赋值后的读数:

用户1=43.5803481 user2=-116.7406331

到目前为止,这些值都很好,下面是我连接它们后的结果:

concat = to_string(user1) + " " + to_string(user2);
concat=43.580348-116.740633

正如你所看到的,我在每个变量的末尾失去了1

下面是我用来连接它们的代码:

concat = to_string(user1) + " " + to_string(user2);
我已经将变量concat声明为字符串和所有内容

所以我想我在想: 1为什么要这样做?参见编辑 2我如何修理它?有更好的方法吗?等等

提前感谢您的关注


编辑:我现在知道to_字符串只有六位小数,但其他链接页面上的解决方案似乎并没有解决我的问题。

我最终使用了下面的代码,它完全满足了我的需要-它使用了一个双变量并将其更改为字符串,同时保持了精度

注意:出于文档的目的,您需要将include包含到预处理器中,以使其工作

template <class T>
string num2str(const T& num, unsigned int prec = 8) 
{
string ret;
stringstream ss;


ios_base::fmtflags ff = ss.flags();
ff |= ios_base::dec;
ff |= ios_base::fixed;
ff |= ios_base::basefield;
ss.flags(ff);
ss.precision(prec);
ss << num;
ret = ss.str();
return ret;
};

可能是重复的谢谢,我不知道to_字符串只占小数点后6位。现在我只需要弄清楚链接中的代码实际上意味着什么