number.h 540 B

12345678910111213141516
  1. #pragma once
  2. #include <cmath>
  3. #include <limits>
  4. namespace jvalidate::detail {
  5. inline bool is_json_integer(double number) { return std::floor(number) == number; }
  6. inline bool fits_in_integer(double number) {
  7. static constexpr double g_int_max = std::numeric_limits<int64_t>::max();
  8. static constexpr double g_int_min = std::numeric_limits<int64_t>::min();
  9. return is_json_integer(number) && number <= g_int_max && number >= g_int_min;
  10. }
  11. inline bool fits_in_integer(uint64_t number) { return (number & 0x8000'0000'0000'0000) == 0; }
  12. }