mirror of
https://github.com/bblanchon/ArduinoJson.git
synced 2025-07-15 11:36:36 +02:00
Fixed floating point value parsing in the form "4e2" or "4E2".
This commit is contained in:
@ -165,9 +165,12 @@ void JsonParser::parseBooleanTo(JsonVariant &destination) {
|
||||
void JsonParser::parseNumberTo(JsonVariant &destination) {
|
||||
char *endOfLong;
|
||||
long longValue = strtol(_ptr, &endOfLong, 10);
|
||||
char stopChar = *endOfLong;
|
||||
|
||||
// Could it be a floating point value?
|
||||
if (*endOfLong == '.') {
|
||||
bool couldBeFloat = stopChar == '.' || stopChar == 'e' || stopChar == 'E';
|
||||
|
||||
if (couldBeFloat) {
|
||||
// Yes => parse it as a double
|
||||
double doubleValue = strtod(_ptr, &_ptr);
|
||||
// Count the decimal digits
|
||||
|
@ -114,12 +114,12 @@ TEST_F(JsonParser_Array_Tests, TwoIntegers) {
|
||||
}
|
||||
|
||||
TEST_F(JsonParser_Array_Tests, TwoDoubles) {
|
||||
whenInputIs("[4.2,8.4]");
|
||||
whenInputIs("[4.2,1e2]");
|
||||
|
||||
parseMustSucceed();
|
||||
sizeMustBe(2);
|
||||
firstElementMustBe(4.2);
|
||||
secondElementMustBe(8.4);
|
||||
secondElementMustBe(1e2);
|
||||
}
|
||||
|
||||
TEST_F(JsonParser_Array_Tests, TwoBooleans) {
|
||||
|
@ -145,11 +145,11 @@ TEST_F(JsonParser_Object_Test, TwoIntergers) {
|
||||
}
|
||||
|
||||
TEST_F(JsonParser_Object_Test, TwoDoubles) {
|
||||
whenInputIs("{\"key1\":12.345,\"key2\":-7.89}");
|
||||
whenInputIs("{\"key1\":12.345,\"key2\":-7E89}");
|
||||
parseMustSucceed();
|
||||
sizeMustBe(2);
|
||||
keyMustHaveValue("key1", 12.345);
|
||||
keyMustHaveValue("key2", -7.89);
|
||||
keyMustHaveValue("key2", -7E89);
|
||||
}
|
||||
|
||||
TEST_F(JsonParser_Object_Test, TwoBooleans) {
|
||||
|
Reference in New Issue
Block a user