从C ++中的txt读取数字(保持相同的小数位数)

时间:2016-01-25 17:51:54

标签: c++ opencv floating-point

我有一个带有这种格式的数字的文本:

256.6 689.8
460.9 127.2
1027.5 110.5
1516.1 92.6
1319.9 580.3

以下用C ++编写的代码来阅读它们:

Vector<float> txt_data;
fstream myfile(path_to_file, ios_base::in);                
while (myfile >> num){
    txt_data.push_back(num);
}
myfile.close();

这里一切都很好。然后,我想将这些坐标复制到 openCV Mat 变量中。为此我先说:

Mat temp;
temp_ = Mat(txt_data.size()/2,2,CV_32F,&txt_data.front());

当显示结果矩阵时,我得到了这个:

[256.60001, 689.79999;
460.89999, 127.2;
1027.5, 110.5;
1516.1, 92.599998;
1319.9, 580.29999]

在算法的下一步中,我必须为每个点添加位移矢量。我可以通过将矩阵中的每一列与整数 disp_vector = [dx,dy] 相加来实现。然而有时(这是奇怪的事情)它可以正常工作,其他一些,它没有并给出其他数字(奇怪的事情,如:1320 + 12 = 1224)。任何想法如何才能正确地从文件中获取所有值只有一位小数的数据?

我试图做类似的事情:

float clean_one_dec = floor(all_decimals_float * 10) / 10); 

但我得到了同样的价值。

编辑:我刚刚发现问题的错误。所有这些代码都在一个函数中,该函数接受位移矢量作为输入变量。向量定义为:

Vect<float> d_vec;

并且只有两个值: dx dy

事实证明(并且我不知道为什么)在对其中一个坐标执行求和时, dx 和/或 dy 变为0。 (很奇怪,对吗?)我刚刚创建了另一个变量并在那里复制了输入 d_vec 。它现在正常工作。

0 个答案:

没有答案