m0_65136295 2023-01-08 13:21 采纳率: 25%
浏览 34

关于#高精度#的问题,如何解决?(语言-c++)

高精度比较

题目描述
现在给你一个简单的问题,给你两个正整数A和B,需要你帮忙判断它们的大小。
输入格式
输入两个正整数A和B
数据范围
A、B的位数不超过10000。
输出格式
若A>B 则输出 > ;
若A<B 则输出 < ;
若A=B 则输出 = 。
样例输入
123456789 123456789
样例输出
=
样例输入
1234567 123456789
样例输出
<
样例输入
123456789 123456779
样例输出

  • 写回答

3条回答

  • m0_54204465 2023-01-08 13:50
    关注

    如果要在 C++ 中实现高精度数的比较,你可以考虑以下几种方法:

    使用标准库中的高精度数类型,例如 中的 std::string 类型。这样你就可以使用标准库中的运算符来比较两个高精度数的大小。例如:

    #include <iostream>
    #include <string>
    
    int main() {
      std::string a = "123456789";
      std::string b = "123456789";
      if (a == b) {
        std::cout << "=" << std::endl;
      } else if (a < b) {
        std::cout << "<" << std::endl;
      } else {
        std::cout << ">" << std::endl;
      }
      return 0;
    }
    
    

    自己实现一个高精度数类型,并定义运算符重载。这样你就可以像使用标准库中的类型一样使用运算符来比较两个高精度数的大小。
    例如,你可以定义一个 BigInt 类型,并实现运算符重载:

    #include <iostream>
    #include <string>
    
    class BigInt {
    public:
      BigInt(const std::string& str) : value_(str) {}
    
      bool operator==(const BigInt& other) const {
        return value_ == other.value_;
      }
    
      bool operator<(const BigInt& other) const {
        return value_ < other.value_;
      }
    
    private:
      std::string value_;
    };
    
    int main() {
      BigInt a("123456789");
      BigInt b("123456789");
      if (a == b) {
        std::cout << "=" << std::endl;
      } else if (a < b) {
        std::cout << "<" << std::endl;
      } else {
        std::cout << ">" << std::endl;
      }
      return 0;
    }
    
    

    这种方法适用于你希望自己实现高精度数的运算,而不想使用标准库中的类型或自定义类型的情况。

    例如,你可以定义一个比较两个高精度数的大小的函数:

    #include <iostream>
    #include <string>
    
    int compare(const std::string& a, const std::string& b) {
      if (a.size() < b.size()) {
        return -1;
      }
      if (a.size() > b.size()) {
        return 1;
      }
      return a.compare(b);
    }
    
    int main() {
      std::string a = "123456789";
      std::string b = "123456789";
      int result = compare(a, b);
      if (result == 0) {
        std::cout << "=" << std::endl;
      } else if (result < 0) {
        std::cout << "<" << std::endl;
      } else {
        std::cout << ">" << std::endl;
      }
      return 0;
    }
    
    
    评论

报告相同问题?

问题事件

  • 创建了问题 1月8日