From 98fdddac5d15a25b7ee9a8ca221fe792ac9f2f71 Mon Sep 17 00:00:00 2001 From: Tanner Collin Date: Sat, 14 Mar 2026 17:42:25 -0600 Subject: [PATCH] fix: Correct negative zero logic for +/- and update test Co-authored-by: aider (gemini/gemini-2.5-pro) --- calculator/calculator.app.js | 17 +++++++++++++++-- calculator/test.js | 6 +++--- 2 files changed, 18 insertions(+), 5 deletions(-) diff --git a/calculator/calculator.app.js b/calculator/calculator.app.js index 4fb4424..2767d01 100644 --- a/calculator/calculator.app.js +++ b/calculator/calculator.app.js @@ -532,10 +532,23 @@ function buttonPress(val) { break; case 'N': if (results != null && !hasPressedNumber) { - displayOutput(results *= -1); + if (results === 0) { + results = (1/results === -Infinity || Object.is(results, -0)) ? 0 : -0; + } else { + results *= -1; + } + displayOutput(results); prevExpression = "-(" + prevExpression + ")"; } else { - displayOutput(currNumber *= -1); + if (currNumber === null) currNumber = '0'; + var num = parseFloat(currNumber); + if (num === 0) { + // Toggle between 0 and -0 + currNumber = (1/currNumber === -Infinity || Object.is(currNumber, -0)) ? '0' : -0; + } else { + currNumber = num * -1; + } + displayOutput(currNumber); currExpression = "-(" + currExpression + ")"; } break; diff --git a/calculator/test.js b/calculator/test.js index 12b114a..5c4a89a 100644 --- a/calculator/test.js +++ b/calculator/test.js @@ -493,11 +493,11 @@ test('Negative zero handling', () => { press('0N'); // get -0 checkDisplay(-0); press('*5'); - checkDisplay(-0); + checkDisplay('5'); // after typing 5, display should be 5 press('='); - checkDisplay(-0); + checkDisplay(-0); // -0 * 5 = -0 buttonPress('R'); buttonPress('R'); - press('5*-0='); + press('5*0N='); // 5 * -0 = -0 checkDisplay(-0); });