文字列で金額計算するにはどうしたらいいですか?
CString a="11111111111111111111";
CString b="11111111111111111111";

足し算
引き算
掛け算
割り算

下記をキーに検索してみましたがいまいち
コードにするとどう組むか?
printfできないよなーーーー
という疑問が残ったままになりました。

多倍長、演算 C++

そもそも桁数に関係なく計算ってできるものなのでしょうか?
整数にするもの4byteの限界ありますよね。8byteでも同様。

A 回答 (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;
}

減算や乗除算も同様です。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!


人気Q&Aランキング