最大值为:long long类型
============================
#include <conio.h>
#include <iostream>
#include <string>
using namespace std;
class Mul_string
{
public:
void Set_value(const string &a, const string &b);
void Get_point();
long long stoi(const string &a);
string itos(long long value);
void print(const string &a, const string &b);
private:
string x;
string y;
int pos;
};
void Mul_string::Set_value(const string &a, const string &b)
{
x = a;
y = b;
pos = 0;
}
void Mul_string::Get_point()
{
int a = 0;
int b = 0;
int length_x = 0;
int length_y = 0;
unsigned int i = 0;
//x
for (i = 0; i < x.length(); i++)
{
if (x.at(i) == '.')
break;
}
if (i == x.length())
length_x = 0;
else
length_x = x.length() - 1 - i;
//y
for (i = 0; i < y.length(); i++)
{
if (y.at(i) == '.')
break;
}
if (i == y.length())
length_y = 0;
else
length_y = y.length() - 1 - i;
/*===============================*/
//cout << length_x << "; " << length_y << endl;
if (length_x == 0 || length_y == 0)
pos = (length_y > length_x) ? length_y : length_x;
else
pos = length_x + length_y;
}
long long Mul_string::stoi(const string &a)
{
long long tmp = 0;
for (unsigned int i = 0; i < a.length(); i++)
{
if (a.at(i) != '.')
{
tmp *= 10;
tmp += a.at(i) - '0';
}
}
return tmp;
}
string Mul_string::itos(long long value)
{
string str;
char tmp[2] = { 0 };
int i = 0;
while (value != 0)
{
if (i++ == pos)
str = string(".") + str;
else
{
tmp[0] = char(value % 10 + '0');
str = string(tmp) + str;
value /= 10;
}
}
return str;
}
void Mul_string::print(const string &a, const string &b)
{
string result;
long long xx = 0;
long long yy = 0;
Mul_string::Set_value(a, b);
Mul_string::Get_point();
xx = Mul_string::stoi(a);
yy = Mul_string::stoi(b);
result = Mul_string::itos(xx * yy);
//cout << pos << endl;
cout << result << endl;
}
int main()
{
string aa;
string bb;
Mul_string src;
while (true)
{
cout << "enter two string:" << endl;
cin >> aa >> bb;
src.print(aa, bb);
}
_getch();
return 0;
}