26 lines
803 B
TypeScript
26 lines
803 B
TypeScript
/**
|
|
* Floating-point precision utilities
|
|
*
|
|
* Provides functions to normalize floating-point numbers for consistent comparison
|
|
* and display, addressing JavaScript's floating-point precision issues.
|
|
*/
|
|
|
|
import { PRECISION_MULTIPLIER } from '$lib/constants/precision';
|
|
|
|
/**
|
|
* Normalize floating-point numbers for consistent comparison
|
|
* Addresses JavaScript floating-point precision issues (e.g., 0.949999988079071 → 0.95)
|
|
*/
|
|
export function normalizeFloatingPoint(value: unknown): unknown {
|
|
return typeof value === 'number'
|
|
? Math.round(value * PRECISION_MULTIPLIER) / PRECISION_MULTIPLIER
|
|
: value;
|
|
}
|
|
|
|
/**
|
|
* Type-safe version that only accepts numbers
|
|
*/
|
|
export function normalizeNumber(value: number): number {
|
|
return Math.round(value * PRECISION_MULTIPLIER) / PRECISION_MULTIPLIER;
|
|
}
|