现有一个不定长的int类型vector,以10为小数点,如[3,9,5,10,1] ,是否可以转换为string类型,替换10为小数点之后再转成单个的double数字,如果出现多个小数点及小数点处于首尾端的时候不退出程序报错而是直接不进行打印
#include <cstdio>
#include <vector>
using namespace std;
int main() {
vector<int> src={3,9,5,10,1};
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 9 5 10 1
//dotloc:3
//pw: 100.00000, src[0]: 3, d:0
//pw: 10.00000, src[1]: 9, d:300
//pw: 1.00000, src[2]: 5, d:390
//dot
//pw: 0.10000, src[4]: 1, d:395
//d:395.1
//
定义一个bool值判断是否有小数点
for循环
打印数字遇到10布尔值true
如果布尔值是true就return了
否则继续输出