Decimal data type for fixed-point arithmetic.
Definition in file decimal64.hpp.
Go to the source code of this file.
#include <array>#include <cassert>#include <cstdint>#include <ios>#include <iosfwd>#include <istream>#include <limits>#include <numeric>#include <optional>#include <stdexcept>#include <string>#include <string_view>#include <type_traits>#include <fmt/compile.h>#include <fmt/format.h>#include <userver/decimal64/format_options.hpp>#include <userver/formats/common/meta.hpp>#include <userver/utils/assert.hpp>#include <userver/utils/flags.hpp>#include <userver/utils/meta_light.hpp>
 Include dependency graph for decimal64.hpp:
 This graph shows which files directly or indirectly include this file:Classes | |
| class | decimal64::DecimalError | 
| The base class for Decimal-related exceptions.  More... | |
| class | decimal64::ParseError | 
Thrown on all errors related to parsing Decimal from string.  More... | |
| class | decimal64::OutOfBoundsError | 
Thrown on overflow in Decimal arithmetic.  More... | |
| class | decimal64::DivisionByZeroError | 
Thrown on division by zero in Decimal arithmetic.  More... | |
| class | decimal64::DefRoundPolicy | 
| Default rounding. Fast, rounds to nearest.  More... | |
| class | decimal64::HalfDownRoundPolicy | 
| Round to nearest, 0.5 towards zero.  More... | |
| class | decimal64::HalfUpRoundPolicy | 
| Round to nearest, 0.5 away from zero.  More... | |
| class | decimal64::HalfEvenRoundPolicy | 
| Round to nearest, 0.5 towards number with even last digit.  More... | |
| class | decimal64::CeilingRoundPolicy | 
| Round towards +infinity.  More... | |
| class | decimal64::FloorRoundPolicy | 
| Round towards -infinity.  More... | |
| class | decimal64::RoundDownRoundPolicy | 
| Round towards zero. The fastest rounding.  More... | |
| class | decimal64::RoundUpRoundPolicy | 
| Round away from zero.  More... | |
| class | decimal64::Decimal< Prec, RoundPolicy_ > | 
| Fixed-point decimal data type for use in deterministic calculations, oftentimes involving money.  More... | |
| struct | std::hash<::decimal64::Decimal< Prec, RoundPolicy > > | 
| std::hash support  More... | |
| class | fmt::formatter<::decimal64::Decimal< Prec, RoundPolicy >, Char > | 
| fmt support  More... | |
Namespaces | |
| namespace | logging | 
| Logging macro and utilities.  | |
| namespace | decimal64 | 
| Fixed-point decimal data type and related functions.  | |
Functions | |
| constexpr int64_t | decimal64::Pow10 (int exp) | 
| A fast, constexpr-friendly power of 10.   | |
| template<typename T , int OldPrec, typename OldRound > | |
| constexpr T | decimal64::decimal_cast (Decimal< OldPrec, OldRound > arg) | 
Cast one Decimal to another Decimal type.   | |
| template<int Prec, typename RoundPolicy > | |
| std::string | decimal64::ToString (Decimal< Prec, RoundPolicy > dec) | 
| Converts Decimal to a string.   | |
| template<int Prec, typename RoundPolicy > | |
| std::string | decimal64::ToString (const Decimal< Prec, RoundPolicy > &dec, const FormatOptions &format_options) | 
| Converts Decimal to a string.   | |
| template<int Prec, typename RoundPolicy > | |
| std::string | decimal64::ToStringTrailingZeros (Decimal< Prec, RoundPolicy > dec) | 
Converts Decimal to a string, writing exactly Prec decimal digits.   | |
| template<int NewPrec, int Prec, typename RoundPolicy > | |
| std::string | decimal64::ToStringFixed (Decimal< Prec, RoundPolicy > dec) | 
Converts Decimal to a string with exactly NewPrec decimal digits.   | |
| template<typename CharT , typename Traits , int Prec, typename RoundPolicy > | |
| std::basic_istream< CharT, Traits > & | decimal64::operator>> (std::basic_istream< CharT, Traits > &is, Decimal< Prec, RoundPolicy > &d) | 
Parses a Decimal from the istream   | |
| template<typename CharT , typename Traits , int Prec, typename RoundPolicy > | |
| std::basic_ostream< CharT, Traits > & | decimal64::operator<< (std::basic_ostream< CharT, Traits > &os, const Decimal< Prec, RoundPolicy > &d) | 
Writes the Decimal to the ostream   | |
| template<int Prec, typename RoundPolicy > | |
| logging::LogHelper & | decimal64::operator<< (logging::LogHelper &lh, const Decimal< Prec, RoundPolicy > &d) | 
Writes the Decimal to the logger.   | |
| template<int Prec, typename RoundPolicy , typename Value > | |
| std::enable_if_t< formats::common::kIsFormatValue< Value >, Decimal< Prec, RoundPolicy > > | decimal64::Parse (const Value &value, formats::parse::To< Decimal< Prec, RoundPolicy > >) | 
Parses the Decimal from the string.   | |
| template<int Prec, typename RoundPolicy , typename TargetType > | |
| TargetType | decimal64::Serialize (const Decimal< Prec, RoundPolicy > &object, formats::serialize::To< TargetType >) | 
Serializes the Decimal to string.   | |
| template<int Prec, typename RoundPolicy , typename StringBuilder > | |
| void | decimal64::WriteToStream (const Decimal< Prec, RoundPolicy > &object, StringBuilder &sw) | 
Writes the Decimal to stream.   | |
Variables | |
| template<int Exp> | |
| constexpr int64_t | decimal64::kPow10 = Pow10(Exp) | 
| A guaranteed-compile-time power of 10.   | |
| template<typename T > | |
| constexpr bool | decimal64::kIsDecimal = impl::IsDecimal<T>::value | 
true if the type is an instantiation of Decimal   | |