Skip to content

fix: avoid float precision loss in Limitless balances#683

Open
00anon0X wants to merge 2 commits into
pmxt-dev:mainfrom
00anon0X:codex/bounty-675-202605260113
Open

fix: avoid float precision loss in Limitless balances#683
00anon0X wants to merge 2 commits into
pmxt-dev:mainfrom
00anon0X:codex/bounty-675-202605260113

Conversation

@00anon0X
Copy link
Copy Markdown

Fixes #675.

This avoids precision loss when converting raw USDC integer balances for Limitless.

Changes:

  • Adds a shared scaledIntegerToNumber helper using integer division/modulo before final number conversion.
  • Replaces unsafe balance conversions using parseFloat(utils.formatUnits(...)) and parseFloat(rawBalance.toString()) / Math.pow(...).
  • Adds unit coverage for a raw balance above Number.MAX_SAFE_INTEGER and ethers BigNumber input.

Verification:

  • npm --workspace=pmxt-core test -- --runInBand core/test/unit/limitless-balance.core.test.ts
  • npm --workspace=pmxt-core run build

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Float safety: Limitless balance parseFloat(formatUnits) and parseFloat / Math.pow float conversions

1 participant