149 return compare(*
this, other) < 0;
154 return compare(*
this, other) > 0;
183 parse(value, length, num);
219 auto newMantissa = (
mantissa + 5) / 10;
262 if(
mantissa == std::numeric_limits<double>::infinity()) {
265 if(
mantissa == -std::numeric_limits<double>::infinity()) {
277 while(mantissa < -0x7fffffff || mantissa > 0x7fffffff) {
299 while(value > 0xffffffffll) {
307 static_assert(
sizeof(
number_t) == 4,
"Bad number_t size");
380 Number(
const char* value,
unsigned length) : number(
number_t::parse(value, length))
394 return number < other.number;
399 return number > other.number;
404 return number == other;
409 return number != other;
#define abs(x)
< sprintf()
Definition: ArduinoCompat.h:22
String toString(number_t number)
Definition: Number.h:458
ConfigDB::const_number_t const_number_t
Definition: Number.h:456
ConfigDB::number_t number_t
Definition: Number.h:455
Base-10 floating-point storage format.
Definition: Number.h:347
Number(const char *value)
Definition: Number.h:384
double asFloat() const
Definition: Number.h:423
int compare(const Number &other) const
Definition: Number.h:412
constexpr Number(const Number &number)=default
bool operator<(const Number &other) const
Definition: Number.h:392
Number(const char *value, unsigned length)
Parse a number from a string.
Definition: Number.h:380
constexpr Number(const number_t &number)
Definition: Number.h:351
constexpr Number(int64_t value)
Definition: Number.h:365
bool operator>(const Number &other) const
Definition: Number.h:397
String toString() const
Definition: Number.h:433
constexpr Number(int value)
Definition: Number.h:369
size_t printTo(Print &p) const
Definition: Number.h:417
Number(const String &str)
Definition: Number.h:388
bool operator!=(const number_t &other) const
Definition: Number.h:407
int64_t asInt64() const
Definition: Number.h:428
constexpr Number(double value)
Definition: Number.h:361
constexpr Number(unsigned int value)
Definition: Number.h:373
bool operator==(const number_t &other) const
Definition: Number.h:402
constexpr Number(const const_number_t &number)
Definition: Number.h:355
Provides formatted output to stream.
Definition: Print.h:37
size_t print(char c)
Prints a single character to output stream.
Definition: Print.h:103
The String class.
Definition: WString.h:133
Compile-time constant number.
Definition: Number.h:327
constexpr const_number_t(double value)
Computer number from a compile-time constant value.
Definition: Number.h:333
Basic definition of base-10 floating point value.
Definition: Number.h:99
static constexpr const number_t lowest()
Most negative value.
Definition: Number.h:127
static number_t parse(const char *value, unsigned length)
Definition: Number.h:180
static constexpr const number_t min()
Smallest positive value.
Definition: Number.h:111
static constexpr number_t normalise(int mantissa, int exponent)
Definition: Number.h:286
static constexpr number_t normalise(unsigned mantissa, int exponent, bool isNeg)
Produce a normalised number_t from component values.
Definition: Number.h:204
static constexpr number_t normalise(double mantissa)
Definition: Number.h:256
bool sign() const
Definition: Number.h:142
static int compare(number_t num1, number_t num2)
size_t printTo(Print &p) const
Definition: Number.h:161
bool operator<(const number_t &other) const
Definition: Number.h:147
static constexpr unsigned minBufferSize
Definition: Number.h:106
static constexpr const number_t max()
Largest positive value.
Definition: Number.h:119
static const char * format(char *buf, number_t number)
Convert number to string.
bool operator!=(const number_t &other) const
Definition: Number.h:137
static bool parse(const char *value, unsigned length, number_t &number)
static constexpr number_t normalise(int64_t value)
Definition: Number.h:291
bool operator>(const number_t &other) const
Definition: Number.h:152
static constexpr unsigned maxSignificantDigits
Definition: Number.h:105
static constexpr int maxExponent
Definition: Number.h:104
static int64_t asInt64(number_t number)
static constexpr unsigned maxMantissa
Definition: Number.h:103
int32_t mantissa
Definition: Number.h:100
bool operator==(const number_t &other) const
Definition: Number.h:132
static double asFloat(number_t number)
int32_t exponent
Definition: Number.h:101
#define str(s)
Definition: testrunner.h:124