Overview
ISO/IEC TR 24733:2011 is a Technical Report that specifies extensions to the C++ language (ISO/IEC 14882:2003) to support decimal floating-point arithmetic in a way that is consistent with IEEE 754-2008. As an informative Technical Report (not a normative International Standard), it defines how decimal data, operations and floating environment (context) map into C++ types, headers and library facilities to reduce rounding errors that arise from binary ⇄ decimal conversions.
Key topics and technical requirements
- Decimal floating-point types: introduces abstract C++ types for decimal arithmetic (commonly referenced as decimal32, decimal64 and decimal128) and a new header **** describing their classes, constructors, conversions and operators.
- Arithmetic model: formalizes data (numbers and NaNs), operations (add, multiply, etc.) and context (exception flags and controls such as rounding modes) for decimal arithmetic in C++.
- Library and header extensions: specifies additions and changes to standard headers including **
- **, /, /, /, /, /, / and **** (facets for formatted IO).
- Floating environment functions: provides decimal-aware environment controls and query functions (examples in the Report include fe_dec_getround and fe_dec_setround) to manage rounding modes and exception flags.
- Type traits and utilities: adds traits like is_decimal_floating_point, hash specializations, and locale facets (extended_num_get / extended_num_put) to support parsing and formatted I/O of decimal types.
- Conformance focus: the extensions are defined at the language/library level; concrete storage layouts and hardware implementations remain implementation-defined.
Practical applications and users
This Technical Report is targeted at:
- C++ compiler and standard library implementers who need portable support for decimal floating point.
- Library authors building decimal arithmetic and financial libraries.
- Financial, accounting and business software developers who require decimal arithmetic to avoid binary-decimal conversion rounding errors and to support auditable rounding semantics.
- Embedded and hardware vendors considering decimal arithmetic support consistent with IEEE 754-2008.
- Regulatory/audit systems where exact decimal rounding and traceable results are required.
Real-world uses include financial calculations, billing/tax systems, currency computations, formatted decimal I/O, and any application where decimal representation and rounding rules must be preserved.
Related standards
- IEEE 754-2008 - Decimal floating-point formats and arithmetic (basis for behavior).
- ISO/IEC 14882:2003 - C++ language standard referenced by the Report.
- IEEE 854, ANSI X3-274 - historical references in the Report’s arithmetic model.
Keywords: ISO/IEC TR 24733:2011, C++ decimal floating-point, IEEE 754-2008, decimal32, decimal64, decimal128, decimal arithmetic, cfenv, decimal conversion, financial computing.