Repository: nlohmann/json
File: include/nlohmann/detail/output/binary_writer.hpp (C++)

Code before:
                {
                    oa->write_character(to_char_type(0x1B));
                    write_number(static_cast<std::uint64_t>(j.m_value.number_unsigned));
                }
                break;
            }

            case value_t::number_float:
            {
                if (std::isnan(j.m_value.number_float))
                {
                    // NaN is 0xf97e00 in CBOR
                    oa->write_character(to_char_type(0xF9));
                    oa->write_character(to_char_type(0x7E));
                    oa->write_character(to_char_type(0x00));
                }
                else if (std::isinf(j.m_value.number_float))
                {
                    // Infinity is 0xf97c00, -Infinity is 0xf9fc00
                    oa->write_character(to_char_type(0xf9));
                    oa->write_character(j.m_value.number_float > 0 ? to_char_type(0x7C) : to_char_type(0xFC));
                    oa->write_character(to_char_type(0x00));
                }
                else
                {
                    if (j.m_value.number_float > -std::numeric_limits<float>::min() and
                            j.m_value.number_float < std::numeric_limits<float>::max() and
                            static_cast<double>(static_cast<float>(j.m_value.number_float)) == j.m_value.number_float)
                    {
                        oa->write_character(get_cbor_float_prefix(static_cast<float>(j.m_value.number_float)));
                        write_number(static_cast<float>(j.m_value.number_float));
                    }
                    else
                    {
                        oa->write_character(get_cbor_float_prefix(j.m_value.number_float));
                        write_number(j.m_value.number_float);
                    }
                }
                break;
            }

            case value_t::string:
            {
                // step 1: write control byte and the string length
                const auto N = j.m_value.string->size();
                if (N <= 0x17)
                {
                    write_number(static_cast<std::uint8_t>(0x60 + N));
                }
                else if (N <= (std::numeric_limits<std::uint8_t>::max)())
                {

Review comment (suggestion):
I think it is better to use `std::numeric_limits<float>::lowest()` here.

Also: use `>=` and `<=` as `lowest()` and `max()` are representable as `float`.

Code after:
                {
                    oa->write_character(to_char_type(0x1B));
                    write_number(static_cast<std::uint64_t>(j.m_value.number_unsigned));
                }
                break;
            }

            case value_t::number_float:
            {
                if (std::isnan(j.m_value.number_float))
                {
                    // NaN is 0xf97e00 in CBOR
                    oa->write_character(to_char_type(0xF9));
                    oa->write_character(to_char_type(0x7E));
                    oa->write_character(to_char_type(0x00));
                }
                else if (std::isinf(j.m_value.number_float))
                {
                    // Infinity is 0xf97c00, -Infinity is 0xf9fc00
                    oa->write_character(to_char_type(0xf9));
                    oa->write_character(j.m_value.number_float > 0 ? to_char_type(0x7C) : to_char_type(0xFC));
                    oa->write_character(to_char_type(0x00));
                }
                else
                {
                    if (j.m_value.number_float >= std::numeric_limits<float>::lowest() and
                            j.m_value.number_float <= std::numeric_limits<float>::max() and
                            static_cast<double>(static_cast<float>(j.m_value.number_float)) == j.m_value.number_float)
                    {
                        oa->write_character(get_cbor_float_prefix(static_cast<float>(j.m_value.number_float)));
                        write_number(static_cast<float>(j.m_value.number_float));
                    }
                    else
                    {
                        oa->write_character(get_cbor_float_prefix(j.m_value.number_float));
                        write_number(j.m_value.number_float);
                    }
                }
                break;
            }

            case value_t::string:
            {
                // step 1: write control byte and the string length
                const auto N = j.m_value.string->size();
                if (N <= 0x17)
                {
                    write_number(static_cast<std::uint8_t>(0x60 + N));
                }
                else if (N <= (std::numeric_limits<std::uint8_t>::max)())
                {