C++实现高精度数除低精度数

在 C++ 中实现高精度数除以低精度数通常需要用到字符串或者数组来表示高精度数。下面是一个简单的示例代码,演示了如何实现这个过程:

```cpp
#include <iostream>
#include <vector>
#include <string>
using namespace std;

// 高精度数除以低精度数
string highPrecisionDivision(string num, int divisor) {
    string result;
    int remainder = 0;

    for (int i = 0; i < num.size(); ++i) {
        int digit = remainder * 10 + (num[i] - '0');
        result.push_back(digit / divisor + '0');
        remainder = digit % divisor;
    }

    // 处理除不尽的情况
    int pos = 0;
    while (pos < result.size() && result[pos] == '0')
        pos++;

    // 结果为空字符串时,说明商为0
    if (pos == result.size())
        return "0";

    return result.substr(pos);
}

int main() {
    string num;
    int divisor;

    cout << "Enter the high precision number: ";
    cin >> num;
    cout << "Enter the divisor: ";
    cin >> divisor;

    string result = highPrecisionDivision(num, divisor);

    cout << "Result of division: " << result << endl;

    return 0;
}
```

这个示例中,我们用字符串来表示高精度数,然后逐位进行除法运算,将商的每一位保存在结果字符串中。最后返回结果字符串。

需要注意的是,这个示例假设了输入的高精度数可以用字符串来表示,并且只处理了整数部分的除法。对于更复杂的需求,可能需要进一步扩展和优化。

附:

在 C++ 中,`substr()` 函数用于从字符串中提取子字符串。它有两种常用的用法:

1. **substr(pos, len)**: 从位置 pos 开始,提取长度为 len 的子字符串。
2. **substr(pos)**: 从位置 pos 开始,提取到字符串的末尾的子字符串。

下面是一个示例演示了如何使用 `substr()` 函数:

```cpp
#include <iostream>
#include <string>
using namespace std;

int main() {
    string str = "Hello, world!";

    // 从位置 7 开始提取长度为 5 的子字符串
    string sub1 = str.substr(7, 5);
    cout << "Substring 1: " << sub1 << endl;  // 输出 "world"

    // 从位置 7 开始提取到字符串的末尾的子字符串
    string sub2 = str.substr(7);
    cout << "Substring 2: " << sub2 << endl;  // 输出 "world!"

    return 0;
}
```

在上面的示例中,`str.substr(7, 5)` 从位置 7 开始提取了长度为 5 的子字符串,即 "world"。而 `str.substr(7)` 从位置 7 开始提取了到字符串末尾的子字符串,即 "world!"。

  • 5
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值