use truncation instead of rounding down or rounding to the nearest value when numerical calculations exceed precision limits

This commit is contained in:
MaysWind
2025-09-09 20:46:51 +08:00
parent d4603a1892
commit 7e2e1a4ad3
13 changed files with 36 additions and 36 deletions
+3 -3
View File
@@ -35,7 +35,7 @@ function normalizeNumber(textualNumber: string): number {
}
function denormalizeNumberToAmount(num: number): number {
return Math.floor(num / normalizedNumberToAmountFactor);
return Math.trunc(num / normalizedNumberToAmountFactor);
}
function checkNumberRange(num: number): void {
@@ -180,14 +180,14 @@ function evaluatePostfixExpr(tokens: string[]): number | null {
result = a - b;
break;
case '*':
result = Math.floor(a * b / normalizeFactor);
result = Math.trunc(a * b / normalizeFactor);
break;
case '/':
if (b === 0) {
logger.warn(`cannot evaluate expression "${tokens.join(' ')}", because division by zero`);
return null;
}
result = Math.floor(a * normalizeFactor / b);
result = Math.trunc(a * normalizeFactor / b);
break;
default:
return null;