Decimal Finance

Zero-error fixed-point arithmetic for financial applications.

module examples.finance

-- Exact base-10 fixed point. No binary float errors.
type Money = Fix<Base10, 18, 2>

fn calculate_interest(principal: Money, rate: Fix<Base10, 18, 6>) -> Money {
    principal * rate
}

fn main() -> Unit requires IO {
    let bal : Money = 100.00
    let rate = 0.05
    io.print(bal + calculate_interest(bal, rate))
}