Skip to content

Commit

Permalink
Uncaught TypeError: o.toFixed is not a function occurs when summarizi…
Browse files Browse the repository at this point in the history
…ng floating-point values in expressions fix #6917 (#6920)
  • Loading branch information
andrewtelnov committed Sep 10, 2023
1 parent 275ec8a commit 913f4b2
Show file tree
Hide file tree
Showing 4 changed files with 10 additions and 1 deletion.
2 changes: 1 addition & 1 deletion src/expressions/expressions.ts
Original file line number Diff line number Diff line change
Expand Up @@ -264,7 +264,7 @@ export class Const extends Operand {
return value.substring(1, value.length - 1);
if (OperandMaker.isNumeric(value)) {
if (value.indexOf("0x") == 0) return parseInt(value);
if (value.length > 1 && value[0] == "0") return value;
if (value.length > 1 && value[0] == "0" && (value.length < 2 || (value[1] !== "." && value[1] !== ","))) return value;
return parseFloat(value);
}
return value;
Expand Down
1 change: 1 addition & 0 deletions src/helpers.ts
Original file line number Diff line number Diff line change
Expand Up @@ -342,6 +342,7 @@ export class Helpers {
}
return a + b;
}
if(typeof a === "string" || typeof b === "string") return a + b;
return Helpers.correctAfterPlusMinis(a, b, a + b);
}
public static correctAfterMultiple(a: number, b: number, res: number): number {
Expand Down
5 changes: 5 additions & 0 deletions tests/expressions/expressionParserTest.ts
Original file line number Diff line number Diff line change
Expand Up @@ -1450,4 +1450,9 @@ QUnit.test("year, month, day, weekday", function(assert) {
assert.deepEqual(runner.run({}), new Date().getDate(), "current day");
runner = new ExpressionRunner("weekday()");
assert.deepEqual(runner.run({}), new Date().getDay(), "current weekday");
});
QUnit.test("Sum two float numbers as string", function(assert) {
let runner = new ExpressionRunner("{a} + {b}");
assert.equal(runner.run({ a: "1.1", b: "2.2" }), 3.3, "#1");
assert.equal(runner.run({ a: "0.1", b: "0.2" }), 0.3, "#2");
});
3 changes: 3 additions & 0 deletions tests/helperstests.ts
Original file line number Diff line number Diff line change
Expand Up @@ -311,6 +311,8 @@ QUnit.test("Helpers.isNumber", function(assert) {
assert.equal(Helpers.isNumber("0xabcd"), true, "0xabcd is a number");
assert.equal(Helpers.isNumber("23.3"), true, "23.3 is a number");
assert.equal(Helpers.isNumber("abcd"), false, "abcd is not a number");
assert.equal(Helpers.isNumber("0.1"), true, "0.1 is number");
assert.equal(Helpers.isNumber("0.2"), true, "0.2 is number");
assert.equal(
Helpers.isNumber("0xbe0eb53f46cd790cd13851d5eff43d12404d33e8"),
false,
Expand Down Expand Up @@ -493,6 +495,7 @@ QUnit.test("sumAnyValues", function(assert) {
assert.equal(Helpers.sumAnyValues([1, 2, 3], 4), 10, "[1, 2, 3] + 10");
assert.equal(Helpers.sumAnyValues(["a", "b", "c"], " "), "a, b, c ", "['a', 'b', 'c'] + ' '");
assert.equal(Helpers.sumAnyValues(["a", "b", "c"], ""), "a, b, c", "['a', 'b', 'c'] + ''");
assert.equal(Helpers.sumAnyValues("0.1", "0.2"), "0.10.2", "'0.1' + '0.2'");
});
QUnit.test("isValueObject", function(assert) {
assert.equal(Helpers.isValueObject("abc"), false, "abc");
Expand Down

0 comments on commit 913f4b2

Please sign in to comment.