|
|
@@ -5,6 +5,9 @@ const {handlePrecision} = require('./utils.js');
|
|
|
const parser = new calculator.Parser();
|
|
|
|
|
|
function calc(exp, isDeg = false) {
|
|
|
+ exp = exp.replace(/E/g, 'e');
|
|
|
+ exp = exp.replace(/\be\b/g, 'Math.E');
|
|
|
+
|
|
|
parser.parse(`isDeg(${isDeg * 1})`);
|
|
|
|
|
|
const stack = [];
|
|
|
@@ -24,26 +27,43 @@ function calc(exp, isDeg = false) {
|
|
|
if (res.length === 1 || !isNaN(resNum)) {
|
|
|
stack.push(resNum);
|
|
|
} else {
|
|
|
- // console.log(resNum, +parser.parse(resNum));
|
|
|
+ console.log(resNum, +parser.parse(resNum));
|
|
|
stack.push(parser.parse(resNum));
|
|
|
}
|
|
|
res = [];
|
|
|
}
|
|
|
}
|
|
|
+ const stackStr = stack.join('');
|
|
|
+ console.log(stackStr);
|
|
|
+ return handlePrecision(parser.parse(stackStr));
|
|
|
+}
|
|
|
+
|
|
|
|
|
|
- return handlePrecision(parser.parse(stack.join('')));
|
|
|
+function print(tests) {
|
|
|
+ if (Array.isArray(tests)) {
|
|
|
+ const prints = [];
|
|
|
+ tests.forEach(v => {
|
|
|
+ let ans = '';
|
|
|
+ try {
|
|
|
+ ans = calc(v.value, v.isDeg);
|
|
|
+ } catch {
|
|
|
+ ans = 'Error';
|
|
|
+ }
|
|
|
+ const expect = String(v.result);
|
|
|
+ const o = {
|
|
|
+ isDeg: v.isDeg ? 1 : 0,
|
|
|
+ exp: v.value,
|
|
|
+ result: ans,
|
|
|
+ expect: expect,
|
|
|
+ correct: ans === expect,
|
|
|
+ };
|
|
|
+ prints.push(o);
|
|
|
+ });
|
|
|
+ console.table(prints);
|
|
|
+ return prints;
|
|
|
+ }
|
|
|
+ console.log(calc(tests));
|
|
|
+ return;
|
|
|
}
|
|
|
|
|
|
-const prints = [];
|
|
|
-tests.forEach(v => {
|
|
|
- const ans = +calc(v.value, v.isDeg);
|
|
|
- const print = {
|
|
|
- isDeg: v.isDeg ? 1 : 0,
|
|
|
- exp: v.value,
|
|
|
- result: ans,
|
|
|
- expect: v.result,
|
|
|
- correct: ans === v.result,
|
|
|
- };
|
|
|
- prints.push(print);
|
|
|
-});
|
|
|
-console.table(prints);
|
|
|
+print(tests);
|