From d26a70dacd8f487970f56e5f301caa9a2b5d1c9a Mon Sep 17 00:00:00 2001 From: NotAShelf Date: Tue, 14 Apr 2026 14:59:46 +0300 Subject: [PATCH] various: eliminate floating-point noise before displaying Signed-off-by: NotAShelf Change-Id: Ic14f4c0a9e0bcbe3460bbecc670f713d6a6a6964 --- packages/ui-utils/src/formatters.ts | 9 +++++---- packages/web/src/components/ComparisonView.tsx | 8 +++++++- packages/web/src/components/ThunkChart.tsx | 5 ++++- 3 files changed, 16 insertions(+), 6 deletions(-) diff --git a/packages/ui-utils/src/formatters.ts b/packages/ui-utils/src/formatters.ts index f55309a..7764c4c 100644 --- a/packages/ui-utils/src/formatters.ts +++ b/packages/ui-utils/src/formatters.ts @@ -6,10 +6,11 @@ export function formatBytes(bytes: number, precision = 2): string { } export function formatNumber(num: number, precision = 2): string { - if (num >= 1e9) return (num / 1e9).toFixed(precision) + 'B'; - if (num >= 1e6) return (num / 1e6).toFixed(precision) + 'M'; - if (num >= 1e3) return (num / 1e3).toFixed(precision) + 'K'; - return num.toString(); + if (num >= 1e9) return parseFloat((num / 1e9).toFixed(precision)).toString() + 'B'; + if (num >= 1e6) return parseFloat((num / 1e6).toFixed(precision)).toString() + 'M'; + if (num >= 1e3) return parseFloat((num / 1e3).toFixed(precision)).toString() + 'K'; + const factor = Math.pow(10, precision); + return (Math.round(num * factor) / factor).toString(); } export function formatTime(seconds: number, precision = 2): string { diff --git a/packages/web/src/components/ComparisonView.tsx b/packages/web/src/components/ComparisonView.tsx index e67bb8b..7bc516c 100644 --- a/packages/web/src/components/ComparisonView.tsx +++ b/packages/web/src/components/ComparisonView.tsx @@ -303,7 +303,13 @@ const ComparisonView: Component = props => { - {Math.abs(row.change).toFixed(prec())}% + {parseFloat( + ( + Math.round(Math.abs(row.change) * Math.pow(10, prec())) / + Math.pow(10, prec()) + ).toFixed(prec()), + )} + % } diff --git a/packages/web/src/components/ThunkChart.tsx b/packages/web/src/components/ThunkChart.tsx index 7a78938..e5cbc5a 100644 --- a/packages/web/src/components/ThunkChart.tsx +++ b/packages/web/src/components/ThunkChart.tsx @@ -49,7 +49,10 @@ const ThunkChart: Component = props => {
- Avoidance rate: {(avoidedRatio() * 100).toFixed(prec())}% + + Avoidance rate:{' '} + {Math.round(avoidedRatio() * 100 * Math.pow(10, prec())) / Math.pow(10, prec())}% +
);