这道题的核心是,将小数点先删除进行存储,并且记录小数的位数,例如
“0.234”存储为“234“小数点位数3,然后进行”234“与”234“的多次相乘最后把小数点加上
#include<iostream>
#include<string>
#include<vector>
#include<cstring>
#include <iomanip>
using namespace std;
typedef struct name
{
string s;
int point_num;
}name;
string multiply(string a, string b)//两个整型大数相乘
{
int la = a.size();
int lb = b.size();
int lm = la + lb;
string mul = "";
mul.insert(mul.begin(), lm, '0');//两数相乘的积的最大位数为两数的位数和
for (int i = la - 1; i >= 0; i--)
for (int j = lb - 1, k = i + j + 1; j >= 0; j--, k--)
{
int temp = (mul[k] - '0') + (a[i] - '0')*(b[j] - '0');
mul[k] = temp % 10 + '0';
mul[k - 1] = (mul[k - 1] - '0') + temp / 10 + '0';
}
int num = 0;
int k = 0;
while (mul[k] == &#