- 締切済み
文字列の金額計算
文字列で金額計算するにはどうしたらいいですか? CString a="11111111111111111111"; CString b="11111111111111111111"; 足し算 引き算 掛け算 割り算 下記をキーに検索してみましたがいまいち コードにするとどう組むか? printfできないよなーーーー という疑問が残ったままになりました。 多倍長、演算 C++ そもそも桁数に関係なく計算ってできるものなのでしょうか? 整数にするもの4byteの限界ありますよね。8byteでも同様。
- みんなの回答 (1)
- 専門家の回答
みんなの回答
- jacta
- ベストアンサー率26% (845/3158)
たとえば加算であれば、下記のように筆算と同じようにすれば実現できます。 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; } 減算や乗除算も同様です。