Open blogdarkspot opened 3 years ago
The code below return a positive number when the value is less then zero, for example -0.2.
std::istream &operator>>(std::istream &strm, decimal_value_storage &storage) { int64_t mantissa; int16_t exponent = 0; if (!(strm >> std::skipws >> mantissa)) { return strm; } // BOOST_THROW_EXCEPTION(json_decode_error(strm, "Expect decimal")); std::streambuf *sbuf = strm.rdbuf(); int c = sbuf->sbumpc(); if (c == '.') { bool negative = false; if (mantissa < 0) { //here mantissa value is 0, there isn't negative zero negative = true; mantissa = -mantissa; } (...) }
This problem occurs because there is not negative zero, so the value -0.2 become 0.2.
The code below return a positive number when the value is less then zero, for example -0.2.
This problem occurs because there is not negative zero, so the value -0.2 become 0.2.