有一个vector类型的容器,比如说3,10,2,5, 现在想提取出来其中的每一项,并且将10转换为小数点 ,使整个容器变为3.25 的double类型,有什么方法可以做到吗
vector<int> src={3,10,2,5};
vector<double> dst;
dst.push_back(1.0*src[0]+0.1*src[2]+0.01*src[3]);
既然vector申明为放整数的容器,那么就不能放浮点数了
再创建一个
vector<double>
数组,将原整型数组按照你的转换规则放入新的
vector<double>
数组就可以了。有帮助请采纳,谢谢!
vector<int> test={1,2,3,4};
vector<double> out(test.begin(),test.end());
#include <cstdio>
#include <vector>
using namespace std;
int main() {
vector<int> src={3,0,10,2,5,8};
vector<double> dst;
double d,pw;
int dotloc=(int)src.size()-1;
for (int i=0;i<(int)src.size();i++) {
printf("%3d ",src[i]);
if (src[i]==10) {
dotloc=i;
}
}
printf("\ndotloc:%d\n",dotloc);
dotloc--;
d=0.0;
pw=1.0;
if (dotloc>0) for (int i=0;i<dotloc;i++) pw*=10.0;
if (dotloc<0) for (int i=0;i<dotloc;i++) pw/=10.0;
for (int i=0;i<(int)src.size();i++) {
if (src[i]==10) {
printf("dot\n");
} else {
printf("pw:%15.5lf, src[%d]:%2d, d:%lg\n",pw,i,src[i],d);
d=d+pw*src[i];
pw/=10.0;
}
}
printf("d:%lg\n",d);
dst.push_back(d);
return 0;
}
// 3 0 10 2 5 8
//dotloc:2
//pw: 10.00000, src[0]: 3, d:0
//pw: 1.00000, src[1]: 0, d:30
//dot
//pw: 0.10000, src[3]: 2, d:30
//pw: 0.01000, src[4]: 5, d:30.2
//pw: 0.00100, src[5]: 8, d:30.25
//d:30.258
//