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:
@@ -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;
|
||||||
|
|||||||
Reference in New Issue
Block a user