• 締切済み

文字列の金額計算

文字列で金額計算するにはどうしたらいいですか? CString a="11111111111111111111"; CString b="11111111111111111111"; 足し算 引き算 掛け算 割り算 下記をキーに検索してみましたがいまいち コードにするとどう組むか? printfできないよなーーーー という疑問が残ったままになりました。 多倍長、演算 C++ そもそも桁数に関係なく計算ってできるものなのでしょうか? 整数にするもの4byteの限界ありますよね。8byteでも同様。

みんなの回答

  • jacta
  • ベストアンサー率26% (845/3158)
回答No.1

たとえば加算であれば、下記のように筆算と同じようにすれば実現できます。 std::string add(std::string lhs, std::string rhs) {  if (lhs.size() < rhs.size())   lhs.insert(0, rhs.size() - lhs.size(), '0');  else if (rhs.size() < lhs.size())   rhs.insert(0, lhs.size() - rhs.size(), '0');  std::string result;  result.reserve(lhs.size() + 1);  bool carry = false;    for (std::string::const_reverse_iterator l = lhs.rbegin(), r = rhs.rbegin(); l != lhs.rend(); ++l, ++r)  {   int sum = (*l - '0') + (*r - '0') + carry;   carry = (sum >= 10);   if (carry) sum -= 10;   result.push_back(sum + '0');  }  if (carry)   result.push_back('1');  std::reverse(result.begin(), result.end());  return result; } 減算や乗除算も同様です。

関連するQ&A

専門家に質問してみよう