Value object representing a monetary amount. Using this ensures type safety and centralizes rounding, comparison, and formatting rules.