in reply to Re: Help with decimals
in thread Help with decimals

First make sure $bar is numeric, then...
printf ("%.${bar}f", $foo / (10 ** $bar));
To deconstruct:

Take 10 to the power $bar to get the correct divisor. Then divide by it to move the decimal place over non-destructively. Then, to give the correct number of places, use printf and %. f -- note that there must be {} around bar because otherwise Perl will try to interpolate $barf, which, if you're using strict and have no variable called $barf will indeed barf. To get the string value rather than printing it out, use sprintf rather than printf.

So, for instance, if you have $foo being 570 and $bar being 1, you get (reducing the expression, so to speak):

  1. printf ("%.${bar}f", $foo / (10 ** $bar))
  2. printf ("%.1f", 570 / (10 ** 1))
  3. printf ("%.1f", 570 / 10)
  4. printf ("%.1f", 57)
  5. "57.0"
... which is what you wanted I think.