3188fb5295
**Fixes #17420** ### Problem The billing/pricing display showed inconsistencies: - "Get Started" / trial signup flow: simple `$9` (no decimals) - Pricing page: `$9.00` (with decimals) For yearly plans (with discount), the effective monthly price might not always be an integer, leading to messy floats in UI (e.g., 7.5 showing as 7.499999 or inconsistent formatting). ### Solution Added a helper function `formatYearlyPriceIfNeccessary` that: - Only applies to yearly subscriptions (`SubscriptionInterval.Year`) - Calculates effective monthly price (`price / 12`) - Returns an integer if the result is whole (`Number.isInteger`) - Otherwise formats to exactly 2 decimal places (`toFixed(2)` → Number) This ensures clean, consistent display: - Whole numbers: no decimals (e.g., $9 → 9) - Fractional: precise 2 decimals (e.g., $81 yearly → 6.75) ### Changes - Added `formatYearlyPriceIfNeccessary` function (likely in a utils/pricing file — specify the file path if you know it, e.g. `src/utils/pricing.ts`) - Applied it where yearly effective prices are rendered (e.g., in BillingPlan component, Pricing page, Signup flow — list the files/components you changed) ### Before / After - Before (yearly example with discount): Might show 7.5 or 7.499999 - After: Always 7.5 (or 7 if integer) ### Testing - Ran locally with `yarn dev` - Checked signup flow and pricing page: prices now consistent and clean - Verified non-yearly plans unchanged Let me know if there's a preferred formatting style (e.g., always show .00, or use Intl.NumberFormat) or if this should be applied in more places! Thanks for the great project, my first contribution btw Closes #17420 --------- Co-authored-by: greptile-apps[bot] <165735046+greptile-apps[bot]@users.noreply.github.com> Co-authored-by: Etienne <45695613+etiennejouan@users.noreply.github.com>