BloombergLP::bdljsn::NumberUtil::asInteger

Load into the specified result (of the template parameter type t_INTEGER_TYPE) with the specified value, even if a non-zero status is returned (truncating fractional digits if necessary). Return 0 on success, k_OVERFLOW if value is larger than can be represented by result, k_UNDERFLOW if value is smaller than can be represented by result, and k_NOT_INTEGRAL if value is not an integral number (i.e., there is a fractional part). For underflow, result will be loaded with the minimum representable value, for overflow, result will be loaded with the maximum representable value, for non-integral values result will be loaded with the integer part of value (truncating the value to the nearest integer). If the result is not an integer and also either overflows or underflows, it is treated as an overflow or underflow (respectively). The (template parameter) t_INTEGER_TYPE shall be either a signed or unsigned integer type (that is not bool) where sizeof(t_INTEGER_TYPE) <= 8. The behavior is undefined unless isValidNumber(value) is true. Note that this operation will correctly handle exponents (e.g., a value of "0.00000000000000000001e20" will produce a result of 1).

Synopsis

Declared in <bdljsn_numberutil.h>

template<class t_INTEGER_TYPE>
static
int
asInteger(
    t_INTEGER_TYPE* result,
    std::string_view const& value);