It follows the user's region by default. To force a specific one, pass it in: NumberFormat.decimalPatternDigits(locale: 'de_DE'). And decimalDigits: 2 sets how many digits show after the dot.
Money needs a symbol and the right number of decimals. Give simpleCurrency the currency code and it handles both, even the decimal count (US Dollar has two, Japanese Yen none).
NumberFormat does much more: sign control, money short forms like $1.2M, your own custom patterns, digit limits, rounding, and so on. For all of that, check the docs, or let your AI agent pick the best one.
The rule is: if the user reads it as "how much", format. If they read it as "which one", skip.
And here's an extension on num that covers 99% of the time: