Browse Source

Make parser treat all exponent literals as float

Hayden 3 years ago
parent
commit
1305ff92f7
2 changed files with 2 additions and 4 deletions
  1. 1 3
      core/math/expression.cpp
  2. 1 1
      tests/core/math/test_expression.h

+ 1 - 3
core/math/expression.cpp

@@ -373,6 +373,7 @@ Error Expression::_get_token(Token &r_token) {
 									is_float = true;
 								} else if (c == 'e') {
 									reading = READING_EXP;
+									is_float = true;
 								} else {
 									reading = READING_DONE;
 								}
@@ -409,9 +410,6 @@ Error Expression::_get_token(Token &r_token) {
 									exp_beg = true;
 
 								} else if ((c == '-' || c == '+') && !exp_sign && !exp_beg) {
-									if (c == '-') {
-										is_float = true;
-									}
 									exp_sign = true;
 
 								} else {

+ 1 - 1
tests/core/math/test_expression.h

@@ -137,7 +137,7 @@ TEST_CASE("[Expression] Scientific notation") {
 			expression.parse("2e5") == OK,
 			"The expression should parse successfully.");
 	CHECK_MESSAGE(
-			Math::is_equal_approx(double(expression.execute()), 25),
+			Math::is_equal_approx(double(expression.execute()), 2e5),
 			"The expression should return the expected result.");
 
 	CHECK_MESSAGE(