diff --git a/AquaNet/src/components/MapDetails.svelte b/AquaNet/src/components/MapDetails.svelte
index 6beb555d..9ef6d9be 100644
--- a/AquaNet/src/components/MapDetails.svelte
+++ b/AquaNet/src/components/MapDetails.svelte
@@ -4,7 +4,7 @@
import { slide } from "svelte/transition";
import { DATA_HOST } from "../libs/config";
import { t } from "../libs/i18n";
- import { type GameName, getMult } from "../libs/scoring";
+ import { type GameName, getMult, roundFloor } from "../libs/scoring";
import { coverNotFound } from "../libs/ui";
import type { MusicMeta } from "../libs/generalTypes";
import { tooltip } from "../libs/ui";
@@ -35,7 +35,7 @@
{("" + getMult(mapData[3], game)[2]).replace("p", "+")}
- {(mapData[3] / 10000).toFixed(1)}%
+ {roundFloor(mapData[3], game, 1)}%
{#if game === 'mai2'}
diff --git a/AquaNet/src/libs/scoring.ts b/AquaNet/src/libs/scoring.ts
index 8d0817b4..e672ea01 100644
--- a/AquaNet/src/libs/scoring.ts
+++ b/AquaNet/src/libs/scoring.ts
@@ -66,7 +66,6 @@ const multTable = {
]
}
-
export function getMult(achievement: number, game: GameName) {
achievement /= 10000
const mt = multTable[game]
@@ -75,3 +74,12 @@ export function getMult(achievement: number, game: GameName) {
}
return [ 0, 0, 0 ]
}
+
+export function roundFloor(achievement: number, game: GameName, digits = 2) {
+ achievement /= 10000
+ // Round, but if the rounded number reaches the next rank, use floor instead
+ const mult = getMult(achievement, game);
+ const rounded = achievement.toFixed(digits);
+ if (getMult(+rounded, game)[2] === mult[2]) return rounded;
+ return (+rounded - Math.pow(10, -digits)).toFixed(digits);
+}
diff --git a/AquaNet/src/pages/UserHome.svelte b/AquaNet/src/pages/UserHome.svelte
index 7bdaa557..166da993 100644
--- a/AquaNet/src/pages/UserHome.svelte
+++ b/AquaNet/src/pages/UserHome.svelte
@@ -16,7 +16,7 @@
import moment from "moment";
import 'chartjs-adapter-moment';
import { CARD, DATA, GAME, USER } from "../libs/sdk";
- import { type GameName, getMult } from "../libs/scoring";
+ import { type GameName, getMult, roundFloor } from "../libs/scoring";
import StatusOverlays from "../components/StatusOverlays.svelte";
import Icon from "@iconify/svelte";
import { GAME_TITLE, t } from "../libs/i18n";
@@ -271,11 +271,13 @@
{("" + getMult(r.achievement, game)[2]).replace("p", "+")}
- {(r.achievement / 10000).toFixed(2)}%
+
+ {roundFloor(r.achievement, game, 1)}%
+
{#if game === 'mai2' || game === 'wacca'}
0} class="dx-change">
- {(r.afterRating - r.beforeRating).toFixed(0)}
+ {r.afterRating === r.beforeRating ? '-' : (r.afterRating - r.beforeRating).toFixed(0)}
{/if}