fix: Correct floating point precision for trig functions

Co-authored-by: aider (gemini/gemini-2.5-pro) <aider@aider.chat>
This commit is contained in:
2026-03-14 13:43:07 -06:00
committed by Tanner
parent 9b48f7342a
commit 6ac882699a
+11 -6
View File
@@ -206,6 +206,11 @@ function subtract(x, y) {
return sum(x, -y); return sum(x, -y);
} }
function fixFloat(n) {
if (Math.abs(n) < 1e-10) return 0;
return n;
}
function doMath(x, y, operator) { function doMath(x, y, operator) {
switch (operator) { switch (operator) {
case '/': case '/':
@@ -366,14 +371,14 @@ function buttonPress(val) {
if (angleMode === 'deg') { if (angleMode === 'deg') {
angle = angle * Math.PI / 180; angle = angle * Math.PI / 180;
} }
results = Math.sin(angle); results = fixFloat(Math.sin(angle));
displayOutput(results); displayOutput(results);
} else if (currNumber != null) { } else if (currNumber != null) {
let angle = currNumber; let angle = currNumber;
if (angleMode === 'deg') { if (angleMode === 'deg') {
angle = angle * Math.PI / 180; angle = angle * Math.PI / 180;
} }
currNumber = Math.sin(angle); currNumber = fixFloat(Math.sin(angle));
displayOutput(currNumber); displayOutput(currNumber);
} }
hasPressedNumber = false; hasPressedNumber = false;
@@ -384,14 +389,14 @@ function buttonPress(val) {
if (angleMode === 'deg') { if (angleMode === 'deg') {
angle = angle * Math.PI / 180; angle = angle * Math.PI / 180;
} }
results = Math.cos(angle); results = fixFloat(Math.cos(angle));
displayOutput(results); displayOutput(results);
} else if (currNumber != null) { } else if (currNumber != null) {
let angle = currNumber; let angle = currNumber;
if (angleMode === 'deg') { if (angleMode === 'deg') {
angle = angle * Math.PI / 180; angle = angle * Math.PI / 180;
} }
currNumber = Math.cos(angle); currNumber = fixFloat(Math.cos(angle));
displayOutput(currNumber); displayOutput(currNumber);
} }
hasPressedNumber = false; hasPressedNumber = false;
@@ -402,14 +407,14 @@ function buttonPress(val) {
if (angleMode === 'deg') { if (angleMode === 'deg') {
angle = angle * Math.PI / 180; angle = angle * Math.PI / 180;
} }
results = Math.tan(angle); results = fixFloat(Math.tan(angle));
displayOutput(results); displayOutput(results);
} else if (currNumber != null) { } else if (currNumber != null) {
let angle = currNumber; let angle = currNumber;
if (angleMode === 'deg') { if (angleMode === 'deg') {
angle = angle * Math.PI / 180; angle = angle * Math.PI / 180;
} }
currNumber = Math.tan(angle); currNumber = fixFloat(Math.tan(angle));
displayOutput(currNumber); displayOutput(currNumber);
} }
hasPressedNumber = false; hasPressedNumber = false;