From 97c2d59b7b14f66e701db28fd10a3bd339576105 Mon Sep 17 00:00:00 2001 From: MistEO Date: Tue, 26 Dec 2023 15:25:55 +0800 Subject: [PATCH] fix stod --- include/json5.hpp | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/include/json5.hpp b/include/json5.hpp index dc96495..0ab6c7b 100644 --- a/include/json5.hpp +++ b/include/json5.hpp @@ -1170,7 +1170,8 @@ inline std::optional::Token> parser5::lex_dec return std::nullopt; } - return newToken(TokenType::numeric, _sign * std::stod(_buffer)); + std::string number = _sign == -1 ? ("-" + _buffer) : _buffer; + return newToken(TokenType::numeric, value(value::value_type::number, std::move(number))); } template @@ -1200,7 +1201,8 @@ inline std::optional::Token> parser5::lex_dec return std::nullopt; } - return newToken(TokenType::numeric, _sign * std::stod(_buffer)); + std::string number = _sign == -1 ? ("-" + _buffer) : _buffer; + return newToken(TokenType::numeric, value(value::value_type::number, std::move(number))); } template @@ -1218,7 +1220,8 @@ inline std::optional::Token> parser5::lex_dec return std::nullopt; } - return newToken(TokenType::numeric, _sign * std::stod(_buffer)); + std::string number = _sign == -1 ? ("-" + _buffer) : _buffer; + return newToken(TokenType::numeric, value(value::value_type::number, std::move(number))); } template @@ -1258,7 +1261,9 @@ inline std::optional::Token> parser5::lex_dec _buffer += StringFromCharCode(read()); return std::nullopt; } - return newToken(TokenType::numeric, _sign * std::stod(_buffer)); + + std::string number = _sign == -1 ? ("-" + _buffer) : _buffer; + return newToken(TokenType::numeric, value(value::value_type::number, std::move(number))); } template @@ -1279,7 +1284,9 @@ inline std::optional::Token> parser5::lex_hex _buffer += StringFromCharCode(read()); return std::nullopt; } - return newToken(TokenType::numeric, _sign * std::stod(_buffer)); + + std::string number = _sign == -1 ? ("-" + _buffer) : _buffer; + return newToken(TokenType::numeric, value(value::value_type::number, std::move(number))); } template