diff --git a/src/json.hpp b/src/json.hpp index a4f28e03f..a886c4369 100644 --- a/src/json.hpp +++ b/src/json.hpp @@ -6520,8 +6520,9 @@ class basic_json const bool value_is_int_like = std::find_if(m_buf.begin(), data_end, [](const char c) - { return (c >= '0' and c <= '9') - or c == '-'; }) + { return c == '.' + or c == 'e' + or c == 'E'; }) == data_end; assert(data_end + 2 < m_buf.end()); diff --git a/src/json.hpp.re2c b/src/json.hpp.re2c index b9716c9e3..dd7af5dde 100644 --- a/src/json.hpp.re2c +++ b/src/json.hpp.re2c @@ -6520,8 +6520,9 @@ class basic_json const bool value_is_int_like = std::find_if(m_buf.begin(), data_end, [](const char c) - { return (c >= '0' and c <= '9') - or c == '-'; }) + { return c == '.' + or c == 'e' + or c == 'E'; }) == data_end; assert(data_end + 2 < m_buf.end()); diff --git a/test/src/unit-regression.cpp b/test/src/unit-regression.cpp index e04513caf..ada1e1042 100644 --- a/test/src/unit-regression.cpp +++ b/test/src/unit-regression.cpp @@ -394,9 +394,9 @@ TEST_CASE("regression tests") //issue #230 //CHECK(j2b.dump() == "23.42"); - CHECK(j3a.dump() == "10000"); - CHECK(j3b.dump() == "10000"); - CHECK(j3c.dump() == "10000"); + CHECK(j3a.dump() == "10000.0"); + CHECK(j3b.dump() == "10000.0"); + CHECK(j3c.dump() == "10000.0"); //CHECK(j3b.dump() == "1E04"); // roundtrip error //CHECK(j3c.dump() == "1e04"); // roundtrip error }