Skip to main content
Participating Frequently
October 10, 2017
Answered

DollarFormat rounding problem?

  • October 10, 2017
  • 2 replies
  • 872 views

DollarFormat(1214.225) is returning $1,214.22.  I would expect $1,214.23.  I think I would have noticed this before and I am wondering if it a CF2016 issue or is this the normal behavior.

Thanks!

This topic has been closed for replies.
Correct answer Grae Desmond

I was being lazy and just copied and pasted the original example.  Should've played more.  Strange it would work by adding another decimal place.  Definitely a bug.  Are you going to submit it?  If not i can add.

Tracker

2 replies

James Moberg
Inspiring
October 11, 2017

If you want better rounding with finer grain mods for up, down and even rounding, consider using the decimalRound UDF. After rounding, prepend the cosmetic $ symbol and use NumberFormat().
http://cflib.org/udf/decimalRound

You could create your own UDF to leverage this:

<cfscript>
function DollarFormat2(num){
if (val(num) GT 0){
return "$" & trim(NumberFormat(decimalRound(num, 2, "up"), '999,999,999,999.00'));
} else {
return "-$" & trim(replace(NumberFormat(decimalRound(num, 2, "up"), '999,999,999,999.00'),'-',''));
}
}
</cfscript>

Grae  Desmond
Inspiring
October 10, 2017

Using Trycf.com and choosing various CF flavors it seems this is normal across versions.  So it seems they expect you to round it then format it.

EBG1103Author
Participating Frequently
October 10, 2017

Thank you.  DollarFormat(1214.2251) does return $1,214.23.  Seems like a bug to me since it is rounding.

Grae  Desmond
Grae DesmondCorrect answer
Inspiring
October 10, 2017

I was being lazy and just copied and pasted the original example.  Should've played more.  Strange it would work by adding another decimal place.  Definitely a bug.  Are you going to submit it?  If not i can add.

Tracker