src/numbers/grid.ts
v0.1.0 · 445 B
import { type Dec, decAbs, decCmp, decMul, decSub, isOnStep, snapToStep } from './decimal.js';
export const QFEX_GRID_NOISE: Dec = { mant: 1n, exp: 6 };
export function snapToGrid(raw: Dec, step: Dec): { value: Dec; exact: boolean; noise: boolean } {
const value = snapToStep(raw, step, 'nearest');
return {
value,
exact: isOnStep(raw, step),
noise: decCmp(decAbs(decSub(raw, value)), decMul(step, QFEX_GRID_NOISE)) <= 0,
};
}