From 3fcc2d26c33ddb43ac782db0351cf6642edecbb1 Mon Sep 17 00:00:00 2001 From: Fabio Issamu Oshiro Date: Wed, 2 Nov 2022 13:15:52 -0300 Subject: [PATCH] fix: formula calculation fails '=6^4-4^4' #83 --- package.json | 2 +- src/Exp.js | 2 +- test/2-bug-fix-test.js | 5 +++++ 3 files changed, 7 insertions(+), 2 deletions(-) diff --git a/package.json b/package.json index 4543acd..7198844 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "xlsx-calc", - "version": "0.7.6", + "version": "0.7.7", "description": "A simple xlsx formula calculator.", "main": "src/index.js", "repository": "git@github.com:fabiooshiro/xlsx-calc.git", diff --git a/src/Exp.js b/src/Exp.js index 82c338a..474f560 100644 --- a/src/Exp.js +++ b/src/Exp.js @@ -134,10 +134,10 @@ module.exports = function Exp(formula) { self.calc = function() { let args = self.args.concat(); - exec_minus(args); exec('^', args, function(a, b) { return Math.pow(+a, +b); }); + exec_minus(args); exec('/', args, function(a, b) { if (b == 0) { throw Error('#DIV/0!'); diff --git a/test/2-bug-fix-test.js b/test/2-bug-fix-test.js index 702c6e8..c522822 100644 --- a/test/2-bug-fix-test.js +++ b/test/2-bug-fix-test.js @@ -47,6 +47,11 @@ describe('Bugs', function() { XLSX_CALC(workbook); assert.equal(workbook.Sheets.Sheet1.A2.v, true); }); + it('should calc 6^4-4^4 = 1040', function() { + workbook.Sheets.Sheet1.A2.f = '6^4-4^4'; + XLSX_CALC(workbook); + assert.equal(workbook.Sheets.Sheet1.A2.v, 1040); + }); it('should consider the end of string', function() { workbook.Sheets.Sheet1.A1.f = 'IF($C$3<=0,"Tempo de Investimento Invalido",IF($C$3<=24,"x","y"))'; workbook.Sheets.Sheet1.C3 = { v: 24 };