15using namespace std::string_view_literals;
21 "BCHA base unit must be greater than 1 satoshi");
23 "XEC base unit must be greater than 1 satoshi");
31 return strprintf(
"%d.%0*d %s", *
this / currency.baseunit, currency.decimals,
32 (*
this % currency.baseunit) / currency.subunit,
33 std::string{currency.ticker});
38 int64_t quotient = *
this / currency.baseunit;
39 int64_t remainder = (*
this % currency.baseunit) / currency.subunit;
42 remainder = -remainder;
45 strprintf(
"%s%d.%0*d", amount < 0 ?
"-" :
"", quotient,
46 currency.decimals, remainder));
51 if (result.has_value()) {
52 return Amount(result.value());
static constexpr Currency BCHA
static constexpr Currency XEC
static constexpr Amount SATOSHI
static constexpr Amount COIN
bool GetBoolArg(const std::string &strArg, bool fDefault) const
Return boolean argument or default value.
constexpr bool DEFAULT_ECASH
std::optional< T > CheckedAdd(const T i, const T j) noexcept
T SaturatingAdd(const T i, const T j) noexcept
void SaturatingAdd(const Amount &other) noexcept
Amount addition with integer saturation.
std::string ToString() const
std::optional< Amount > CheckedAdd(const Amount &other) const noexcept
Amount addition with integer overflow check.
static const Currency & get()