c++高精度乘法

在C++中实现高精度乘法通常需要自己编写代码,因为C++的内置数据类型(如int、long、double)有限制,无法表示非常大的整数精度。以下是一个简单的示例,演示如何在C++中实现高精度乘法:

#include <iostream>

#include <vector>

using namespace std;

// 两个字符串表示的大整数相乘

string multiply(string num1, string num2) {

    int m = num1.size();

    int n = num2.size();

    vector<int> result(m + n, 0);

    for (int i = m - 1; i >= 0; i--) {

        for (int j = n - 1; j >= 0; j--) {

            int mul = (num1[i] - '0') * (num2[j] - '0');

            int sum = mul + result[i + j + 1];

            result[i + j] += sum / 10;

            result[i + j + 1] = sum % 10;

        }

    }

    // 处理结果前面的零

    int start = 0;

    while (start < result.size() && result[start] == 0) {

        start++;

    }

    string res = "";

    for (int i = start; i < result.size(); i++) {

        res += to_string(result[i]);

    }

    return res.empty() ? "0" : res;

}

int main() {

    string num1 = "123456789";

    string num2 = "987654321";

    string result = multiply(num1, num2);

    cout << "结果: " << result << endl;

    return 0;

}

上述代码演示了两个大整数字符串的相乘操作。它将输入的两个数字字符串转换为数字,然后模拟手工乘法的过程,将结果存储在一个数组中。最后,将数组转换为一个字符串表示结果。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

猫一样的女子245

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值