Mathematical operations between two strings

  • A+
Category:Languages

I'm trying to add subtract and multiply numbers with huge decimals C++.

Example:

4125487821547.87879845215584844588 - 354556689.899455132265468

What I figured so far is that I need to save inputs as a string, but not sure how to proceed after that.

Appreciate the help in advance Thanks

 


You need a big integer class or library. There are several implementations available, just to give you an overview on how to use such an external dependency, here is a solution based on Boost:

#include <boost/multiprecision/cpp_int.hpp>  using BigInt = boost::multiprecision::cpp_int; 

You can now construct instances by passing string or integral literals to the constructor and do all standard arithmetic operations with these objects, e.g.

const BigInt i("8787984521558484092344588"); const BigInt j("32308942039402934");  std::cout << i - j << "/n"; 

One nice detail of such classes is that they usually demonstrate one of the few justified scenarios for non-explicit constructors with one argument, i.e., for the sake of smooth interoperability with builtin integral types. Example:

int n = 42;  // Use builtin ints like BigInts via implicit BigInt(int) ctor: std::cout << (i + n)/(j % 3) << "/n"; 

You only need the Boost headers for these snippets, no linkage is required. Check out the docs when proceeding with this library.

Comment

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: