fix: handles decimal points in fiat currency #93
+37
−11
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
fixes: #84
Database Schema Decision: Handling Fiat Currency Precision in ZapPlanner
Hi,
I've been working on fixing decimal amount handling in ZapPlanner and discovered a critical architectural inconsistency if we handle the decimal places in fiat currecy just by parseFloat everywhere.
Current Problem:
$2.21 USD
$2.21 → 4235.67 sats
amount: 4236 (Int), currency: "USD"
← Inconsistent!Two Architectural Approaches:
Option A: Change Schema to Float
Pros: Preserves exact precision, no rounding errors
Cons: Float precision issues, performance impact, breaks Lightning/Bitcoin conventions (whole satoshis)
Option B: Keep Int Schema + Enhanced Storage
Pros: Follows Bitcoin standards, better performance, maintains payment precision
Cons: Additional fields, slight complexity
Current Implementation:
I've temporarily fixed this bug by storing
currency: "SATS"
to prevent double-conversion, but this loses the original currency information.What's your recommendation on the long-term architecture?