This week's book giveaway is in the JavaScript forum. We're giving away four copies of Getting MEAN with Mongo, Express, Angular, and Node and have Simon Holmes on-line! See this thread for details.

I've managed to create a self calculating form but I'm stuck on getting the calculation amounts to round off to 2 decimal places. In the example I've pasted below, I need to make the sales tax and grand total amounts round off to 2 decimal places since it is displaying money. The other total fields I don't need to worry about since, unless the price changes, they will never be anything but a whole value. FYI, the sales tax is based on what the user selects in the state field farther up in the form. Can someone help me?

[ September 24, 2003: Message edited by: Scott Christy ] [ September 25, 2003: Message edited by: Eric Pascarello ]

yourAns = Math.round(yourVar * 100)/100; this will round your answer but will not display extra zeros if needed. So you need to use this too...

See if that helps you [ September 25, 2003: Message edited by: Eric Pascarello ]

Scott Christy
Greenhorn

Joined: Sep 23, 2003
Posts: 11

posted

0

Thanks for the code. I think I see what you're doing but I'm not sure about how to put it in my code. I'll give it a try this afternoon and let you know how it goes. Thanks again for trying to help me.

Scott Christy
Greenhorn

Joined: Sep 23, 2003
Posts: 11

posted

0

That worked perfect for rounding the values to the nearest dollars and cents. I'm left with one last problem. When the subtotal and the tax are added together it appears to be rounding off to the nearest whole dollar value. For example, in the script below, if the subtotal calculates to 30 and the tax is 1.65 the answer given for the total is 31. It shoudl be 31.65.

[edited to fit page: Eric] [ September 29, 2003: Message edited by: Eric Pascarello ]

Scott Christy
Greenhorn

Joined: Sep 23, 2003
Posts: 11

posted

0

I changed the line that says: form.grandtotal.value = Math.round((parseInt(form.tax.value) + parseInt(form.subtotal.value)) * 100)/100; to form.grandtotal.value = Math.round((parseFloat(form.tax.value) + parseFloat(form.subtotal.value)) * 100)/100; and it seems to work ok. Is this the right technique to use?

Eric Pascarello
author
Rancher

Joined: Nov 08, 2001
Posts: 15385

6

posted

0

yes, the int does not carry decimal places....float does...