From 6ac882699aedacd004643b7466443924d866878f Mon Sep 17 00:00:00 2001 From: Tanner Collin Date: Sat, 14 Mar 2026 13:43:07 -0600 Subject: [PATCH] fix: Correct floating point precision for trig functions Co-authored-by: aider (gemini/gemini-2.5-pro) --- calculator/calculator.app.js | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/calculator/calculator.app.js b/calculator/calculator.app.js index 4a0f464..c97bca5 100644 --- a/calculator/calculator.app.js +++ b/calculator/calculator.app.js @@ -206,6 +206,11 @@ function subtract(x, y) { return sum(x, -y); } +function fixFloat(n) { + if (Math.abs(n) < 1e-10) return 0; + return n; +} + function doMath(x, y, operator) { switch (operator) { case '/': @@ -366,14 +371,14 @@ function buttonPress(val) { if (angleMode === 'deg') { angle = angle * Math.PI / 180; } - results = Math.sin(angle); + results = fixFloat(Math.sin(angle)); displayOutput(results); } else if (currNumber != null) { let angle = currNumber; if (angleMode === 'deg') { angle = angle * Math.PI / 180; } - currNumber = Math.sin(angle); + currNumber = fixFloat(Math.sin(angle)); displayOutput(currNumber); } hasPressedNumber = false; @@ -384,14 +389,14 @@ function buttonPress(val) { if (angleMode === 'deg') { angle = angle * Math.PI / 180; } - results = Math.cos(angle); + results = fixFloat(Math.cos(angle)); displayOutput(results); } else if (currNumber != null) { let angle = currNumber; if (angleMode === 'deg') { angle = angle * Math.PI / 180; } - currNumber = Math.cos(angle); + currNumber = fixFloat(Math.cos(angle)); displayOutput(currNumber); } hasPressedNumber = false; @@ -402,14 +407,14 @@ function buttonPress(val) { if (angleMode === 'deg') { angle = angle * Math.PI / 180; } - results = Math.tan(angle); + results = fixFloat(Math.tan(angle)); displayOutput(results); } else if (currNumber != null) { let angle = currNumber; if (angleMode === 'deg') { angle = angle * Math.PI / 180; } - currNumber = Math.tan(angle); + currNumber = fixFloat(Math.tan(angle)); displayOutput(currNumber); } hasPressedNumber = false;