mFAST
mFAST copied to clipboard
Problem when use fast::json::decode with negavite decimal number less than zero
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.