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