How to Format Numbers With Commas and Decimal Places in Power Apps

The first budget tracker I built in Power Apps looked fine in testing, until the finance manager opened it. Every amount was a long run of digits, such as 1250000 and 87500.5, and they had to count the zeros to tell a million from a hundred thousand. Their exact words were that it looked like a database, not a finance app.

Power Apps doesn’t add thousand separators or fixed decimal places on its own, but one function fixes it: Text(). In this tutorial, I’ll show you the formats I use most, how to keep them consistent for people in different countries, and how to save the plain number back to SharePoint.

Quick answer: Use the Text() function with a format string, for example Text(1250000, "#,##0.00"), which shows 1,250,000.00. Add a dollar sign with "$#,##0.00". To make the result the same for everyone, whatever their device’s language, start the format with a language tag: Text(ThisItem.Budget, "[$-en-US]$#,##0.00"). Convert text back to a number with Value() before saving it.

How the Text() function formats numbers

Text() turns a number into text, using a format string that describes how it should look. If you’ve used custom number formats in Excel, it will feel familiar. Microsoft’s Text function reference lists all the placeholders, but four of them cover nearly everything:

PlaceholderWhat it does
0Always shows a digit, adding zeros if needed. Use it after the decimal point for a fixed number of decimals.
#Shows a digit only if it’s significant, so leading and trailing zeros are dropped.
,Between digit placeholders, adds a thousands separator every three digits.
.Marks the decimal point.

The difference between 0 and # matters more than it looks. Because # never shows insignificant zeros, a format like "#,###" shows nothing at all for a value of 0. That’s why I end the whole-number part with a zero, as in "#,##0", so zero is displayed as 0.

Format a number with commas (no decimals)

For counts and whole amounts, you only need the thousands separator. This formula shows 1,500,000:

Text(1500000, "#,###")
Power Apps Text function formatting a number with commas

You’d normally use it in a label’s Text property, pointing at a column instead of a fixed number, for example Text(ThisItem.TotalSales, "#,##0") in a gallery.

Format a number with commas and two decimal places

This is the format most finance apps need. Adding .00 forces exactly two decimal places:

Text(1250000, "#,###.00")
Power Apps Text function formatting a number with commas and two decimals

The result is 1,250,000.00, and 1250000.5 becomes 1,250,000.50. If you used # after the decimal point instead, whole numbers would lose their decimals, and a column of amounts wouldn’t line up. Here’s how the common formats compare:

FormulaResult
Text(5000, "#,##0.00")5,000.00
Text(5000.5, "#,##0.00")5,000.50
Text(1234567.89, "#,##0.00")1,234,567.89
Text(0, "#,##0.00")0.00

Add a dollar sign

To show an amount as currency, put the symbol at the start of the format string:

Text(1250, "$#,###.00")
Power Apps Text function formatting a number as dollars

The result is $1,250.00. Keep in mind that the symbol is just text in the format; it doesn’t convert the amount from another currency.

Keep the format the same for every user

This is the part that catches people out once an app is shared across countries. By default, Text() uses the language of the person’s device, and different languages use different separators: 1,250,000.00 in the United States, but 1.250.000,00 in Germany. So the same formula can look different for two people.

To fix the format, put a language tag at the start of the format string. The tag tells Power Apps how to read the separators in your format, and an optional third argument decides the language of the result. This formula always gives the US format, whoever opens the app:

Text(1250000, "[$-en-US]#,##0.00")

And if an app really does need the German format, you write the format with German separators, tag it as de-DE, and ask for a German result:

Text(1250000, "[$-de-DE]#.###,00", "de-DE")
Power Apps Text function with a German language tag

The result is 1.250.000,00. Microsoft’s own example in the Text reference does the same for French. One limit to be aware of is that the thousands separator always groups digits in threes; Text() doesn’t support other grouping patterns.

Show formatted numbers from SharePoint

With SharePoint, I keep the number as a plain Number column in the list and only format it when it’s displayed. In a gallery, set the label’s Text property like this:

Text(ThisItem.Budget, "[$-en-US]$#,##0.00")
Power Apps gallery showing SharePoint budget values formatted as dollars

In a display form, the same idea works in the card’s label: Text(Parent.Default, "[$-en-US]$#,##0.00"). Formatting in the app rather than in the data means SharePoint still sorts, filters and totals the values correctly.

Format a number as people type it

Formatting a text input while someone is editing is trickier, because the input holds text, not a number. The approach I use is to store the formatted value in a variable when the person leaves the field, and show that variable in the input. Set the input’s OnChange property to:

Set(
    varBudget,
    Text(Value(txtBudget.Text), "[$-en-US]$#,##0.00")
)

Then set the same input’s Default property to varBudget. When someone types 87500 and moves on, the field shows $87,500.00. Using the variable as the go-between is what avoids a circular reference; don’t point Default at the input’s own text.

If you use the modern Number input control instead, note that it keeps the value as a number and lets you choose up to three decimal places through its Precision property, but it doesn’t display thousand separators or currency symbols (Number input reference). For those, show a formatted label next to it.

Save the number back to SharePoint

Whatever you display, SharePoint’s Number column needs a number, not text such as “$87,500.00”. Value() converts it back, and it understands the currency symbol and separators of the language, so you don’t need to strip the dollar sign first (Value function reference):

Patch(
    Projects,
    galProjects.Selected,
    { ProjectBudget: Value(txtBudget.Text) }
)

If your app uses a language tag in Text(), it’s safest to give Value() the same language as a second argument, for example Value(txtBudget.Text, "en-US"), so it reads the separators the same way.

Quick reference

What you wantFormat stringExample result
Thousands separator"#,##0"1,250,000
Two decimal places"#,##0.00"1,250,000.00
One decimal place"#,##0.0"1,250,000.5
US dollars"$#,##0.00"$1,250.00
US format for every user"[$-en-US]$#,##0.00"$1,250.00
Three decimal places"#,##0.000"1,250.500
Leading zero for small values"0.00"0.75

Common mistakes

The most common one is doing maths on the output of Text(). Text() returns text, so adding two formatted values fails or gives odd results; do the calculation on the numbers first and format the final result.

The second is forgetting the language tag in an app used in several countries, and then getting reports that amounts look wrong for some people. And the third is using # where you need 0: it drops the zeros you wanted to show, including a plain 0.

These Power Apps tutorials go well with number formatting:

Frequently Asked Questions

How do I format a number with commas in Power Apps?

Use the Text function with a thousands separator in the format, for example Text(1500000, “#,##0”), which shows 1,500,000.

How do I show two decimal places in Power Apps?

Use 0 after the decimal point in the format, for example Text(ThisItem.Budget, “#,##0.00”). The 0 placeholders force two decimals, even for whole numbers.

How do I format a number as dollars in Power Apps?

Add the dollar sign to the format string: Text(1250, “$#,##0.00”) shows $1,250.00. Add [$-en-US] at the start to keep the format the same for every user.

Why does my number format look different for some users?

Text uses the language of each person’s device by default, and languages use different separators. Start the format with a language tag such as [$-en-US] to fix it.

How do I convert a formatted number back to a number in Power Apps?

Use Value, for example Value(“$87,500.00”). It understands the currency symbol and separators of the language, so you can save the result to a SharePoint Number column.