高精度乘法运算的实现(不完全)

本文探讨了智能算法在大数据开发领域的应用,包括Hadoop、Spark等技术的使用,以及如何通过算法优化数据处理效率。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >



最大值为: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;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值