22

I found lots of stuff to format floats to common known numbers, but how can I format a float to a max of 2 decimals, but only if the decimals are needed?

Examples:

  1.11 # not 1.111
  1.12 # it was 1.116 (round up)
  1.1  # not 1.10
  1    # not 1.00

if I do

  $('{0:N2}' -f $flt)

I get

  1.00 # :(

Thanks in advance!

ruffin
  • 16,507
  • 9
  • 88
  • 138
gooly
  • 1,241
  • 7
  • 20
  • 38

2 Answers2

41

Use [math]::round, ie:

[math]::round(1.111,2)

will return 1.11 and

[math]::round(1.00,2)

yields 1

Raf
  • 9,681
  • 1
  • 29
  • 41
10

You can use the # character in a custom numeric format string to include non-zero digits in a value.

> 1.001,1.101,1.111 | % { '{0:0.##}' -f $_ }
1
1.1
1.11

The N2 standard numeric format string is basically equivalent to 0.00, which produces a fixed number of decimal digits.

Emperor XLII
  • 13,014
  • 11
  • 65
  • 75