cancel
Showing results for 
Search instead for 
Did you mean: 
Reply
Highlighted
Frequent Visitor

Format decimal numbers

I am trying to format the data of a calculated field within the flow to send in an email to show 2 decimal places. has anyone acheived this? 

 

I have tried both Text and Round and several iterations of these functions and they come back as invalid templates. 

 

Can anyone shine any light on this? 

 

Capture.JPG

 

the value from the column is 1.50000000000 i only want to see 1.5

1 ACCEPTED SOLUTION

Accepted Solutions
Highlighted
Dual Super User III
Dual Super User III

Re: Format decimal numbers

As far as I know, math functions currently supported in Microsoft FLow as "expressions" are the ones defined here:

https://docs.microsoft.com/en-us/azure/logic-apps/logic-apps-workflow-definition-language

 

I guess you can multiply by 100, convert into integer, get back to float and divide into 100; but I haven't tested myself; so unsure if both float() and int() accepts non-string parameters

 

Hope this helps

 



Each time you click on any of our inspiring answers 'Thumb up' icon...
...an ewok scapes from the stormtroopers.

Be grateful, Thumbs up! Save the Galaxy for free!


Escribo sobre Power Automate en:
https://medium.com/anyone-can-automate/

Proud to be a Flownaut!



View solution in original post

20 REPLIES 20
Highlighted
Dual Super User III
Dual Super User III

Re: Format decimal numbers

As far as I know, math functions currently supported in Microsoft FLow as "expressions" are the ones defined here:

https://docs.microsoft.com/en-us/azure/logic-apps/logic-apps-workflow-definition-language

 

I guess you can multiply by 100, convert into integer, get back to float and divide into 100; but I haven't tested myself; so unsure if both float() and int() accepts non-string parameters

 

Hope this helps

 



Each time you click on any of our inspiring answers 'Thumb up' icon...
...an ewok scapes from the stormtroopers.

Be grateful, Thumbs up! Save the Galaxy for free!


Escribo sobre Power Automate en:
https://medium.com/anyone-can-automate/

Proud to be a Flownaut!



View solution in original post

Highlighted
Frequent Visitor

Re: Format decimal numbers

@efialttes thank you so much for your repsponse and the link you provided. With a little reading and some trial and error i have come up with the following:

 

if(or(greater(body('Create_item')?['Days_x0020_Total'], string (10)),equals(body('Create_item')?['Days_x0020_Total'],string(10))),take(body('Create_item')?['Days_x0020_Total'],4),take(body('Create_item')?['Days_x0020_Total'],3))

 

This basically looks at the value in the total days field and determines if it is greater or equal to 10, if yes then it will produce 4 place and if no it will produce 3 places.

 

works a treat

Highlighted
Dual Super User III
Dual Super User III

Re: Format decimal numbers

@Damo_R

You are welcome. Thanks for sharing!



Each time you click on any of our inspiring answers 'Thumb up' icon...
...an ewok scapes from the stormtroopers.

Be grateful, Thumbs up! Save the Galaxy for free!


Escribo sobre Power Automate en:
https://medium.com/anyone-can-automate/

Proud to be a Flownaut!



Highlighted
Advocate II
Advocate II

Rounding for specific scenarios

There's still no generalized rounding solution in Flow, which means building solutions specific to your data. Here's an approach I took when I needed to round from three decimals (#.###) to two (#.##) for display purposes. Fortunately, I knew I'd always be getting data in a #.### format, but you could pretty easily extend this to find the decimal place if the number of places to the left of the decimal was unknown.

 

if(contains('56789', substring(string(triggerBody()['number']),4,1)),substring(string(add(triggerBody()['number'],0.01)),0,4),substring(string(triggerBody()['number']),0,4))

Highlighted
Regular Visitor

Re: Format decimal numbers

I just used your suggestion to round the result of my division formula:

Original expression:

div(variables('Sum'),5)

Which returned the full result, i.e 1.6666666 or similar.

 

I formatted it to 1 decimal using this expression:

div(float(int(mul(div(variables('Sum'),5),10))),10)

 

that is

  • take result from division
  • multiple by 10
  • converting to int
  • converting to float (else it became an integer result)
  • dividing by 10

 

Thanks for the hint!

Highlighted
New Member

Re: Format decimal numbers

It was not as simple, because int() and float() only accept string arguments. So you get a run-time error like this:

 

InvalidTemplate. Unable to process template language expressions in action 'Rounded' inputs at line '1' and column '2484': 'The template language function 'int' was invoked with a parameter that is not valid. The value cannot be converted to the target type.'.
 
On top of that, the  int() function only accepts string representations of integer numbers - it does not accept any floating point number. So I had to turn the number to string, select the part before the '.' and pass it to  int(). Not sure if the '.' is subject to localization, which would obviously fail. 
 
This is the expression I've put into a Compose action:
div(int(first(split(string(mul(123.456, 10.0)),'.'))), 10.0)
The output was 
123.4
Highlighted
New Member

Re: Format decimal numbers

Thanks to Damo_R I was able to round numbers for our case, with two numbers behind. A little bit ugly, but it works.

 

Initializing 2 variables.

variable var as string 

first(split(string(mul(123.454, 1000.0)),'.'))

(you can put your number or varible where 123.454 is)

variable varTemp as Integer

int(variables('var'))

than we go on with a condition

if

int(last(variables('var')))

equal or even to 5

 

set var to

sub(add(int(variables('varTemp')),10),int(last(string(variables('varTemp')))))

else

set var to 

sub(int(variables('varTemp')),int(last(string(variables('varTemp')))))

finally transform it to a float (int would slice the numer)

div(float(int(div(int(variables('var')),10))),100)

 

Frequent Visitor

Re: Format decimal numbers

Glad my efforts could help you
Highlighted
Advocate V
Advocate V

Re: Format decimal numbers

Here's a similar solution, but no temp variables are needed.

Uses variables('myFloat') to represent the number you want to round.

div(
add(
mul(variables('myFloat'), 1000),
sub(
if(
greaterOrEquals(
mod(mul(variables('myFloat'), 1000), 10),
5
),
10,
0
),
mod(mul(variables('myFloat'), 1000), 10)
)
),
1000
)

Or, all in one line: 

div(add(mul(variables('myFloat'),1000),sub(if(greaterOrEquals(mod(mul(variables('myFloat'),1000),10),5),10,0),mod(mul(variables('myFloat'),1000),10))),1000)

The float is multilpiled by 1000 before doing modulo to avoid tiny-fraction math errors (e.g. returning 0.00499999... instead of 0.005).

 

Using add, sub, mul, div, and mod to round a float... a reasonable workaround... XD

 

If you're looking for an expression to format for currency with a thousands separator, see my expression in another post.

Highlighted
Frequent Visitor

Re: Format decimal numbers

This can be done with the following

 

substring(string(triggerOutputs()?['body/tileValue'])),0,3)

Don't forget the decimal '.' counts as a character because this is a string not an actual intager.  It is not actual rounding, but it accomplished what I needed for my email to look cleaner. 

Highlighted
Post Prodigy
Post Prodigy

Re: Rounding for specific scenarios

@StevenWade , thanks so much for sharing this. I want to limit my decimals to two points, can you please help me with what modification should I make in the expression you shared please, thanks in advance. 

Highlighted
Post Prodigy
Post Prodigy

Re: Format decimal numbers

@jan-dolejsi thanks for sharing. I have a requirement to limit decimal points to two, so as an example: 40.325 should result into 40.33. Can you please help me with the revised formula, thanks in advance. 

Highlighted
Post Prodigy
Post Prodigy

Re: Format decimal numbers

@degvalentine thanks for sharing, I used your expression for limiting decimals to two places and it seems to work well. Noticing a small issue, if the values are 2.2, 4.3 etc then the expression returns 2.2, 4.3 only but instead i want it to show 2.20, 4.30, is it possible? Please help.

Highlighted
Advocate V
Advocate V

Re: Format decimal numbers

Hi @dmistry,

 

Actually, my hideous workaround is no longer needed. They added the "formatNumber" function. Please use that instead. Here's the syntax for common currency formatting (without currency symbol):

 

formatNumber(variables('myFloat), 'N', 'en-US')

 

Highlighted
Post Prodigy
Post Prodigy

Re: Format decimal numbers

Thanks a lot for. My field is of type number. Can u give some info on the parameter ‘N’ specified in the expression, would it help limiting decimals to two points? Thanks.
Highlighted
Advocate V
Advocate V

Re: Format decimal numbers

Here's the doc for all available number formatting options: https://docs.microsoft.com/en-us/dotnet/standard/base-types/standard-numeric-format-strings

Highlighted
Post Prodigy
Post Prodigy

Re: Format decimal numbers

Thanks @degvalentine a lot for sharing this, I was stuck with this issue since 3 days and this helped me out, keep up the good work, cheers!! 

p.s: it works great and gives me two decimal points. 

Highlighted
Helper II
Helper II

Re: Format decimal numbers

Hi @jan-dolejsi ,

 

How do I get 2 decimals instead of just one? 

 

Thank you!

Highlighted
Advocate V
Advocate V

Re: Format decimal numbers

@rafaelbenicio you should use the "formatNumber()" expression or the "Format Number" action.

 

Here are links to the standard formats and custom formats.

 

formatNumber(1.995,'N2') // returns "2.00"

 

Helpful resources

Announcements
Community Conference

Power Platform Community Conference

Check out the on demand sessions that are available now!

Power Platform ISV Studio

Power Platform ISV Studio

ISV Studio is designed to become the go-to Power Platform destination for ISV’s to monitor & manage published applications.

Upcoming Events

Experience what’s next for Power Automate

See the latest Power Automate innovations, updates, and demos from the Microsoft Business Applications Launch Event.

Top Solution Authors
Top Kudoed Authors
Users online (6,597)