Sign up to receive Decoded, a new monthly digest with product updates, feature release info, continuing education opportunities, and more.

In the following Script; how do I get the total to round to two decimal places i.e. $21.36?

<html>

<head>

<script language="JavaScript">

var N=3 // number of VAL/QTY pairs

function calcit()

{

stotal = 0;

f = document.forms[0];

for(i=0 ; i<N ; i++)

{

if (f.elements[i*2].value >= 0)

{

v = f.elements[i*2].value;

q = f.elements[i*2+1].value;

t1 = v * q;

}

stotal += t1;

}

f.stotal.value = "$" + stotal;

//10%tax

total = stotal * 1.0775;

f.total.value = "$" + total;

}

</script>

</HEAD>

<BODY>

<FORM>

VAL1:<INPUT TYPE="text" name="v1" value="" size=6><br>

QTY:<INPUT TYPE="text" name="q1" value="1" size=3><br>

VAL2:<INPUT TYPE="text" name="v2" value="" size=6><br>

QTY:<INPUT TYPE="text" name="q2" value="1" size=3><br>

VAL3:<INPUT TYPE="text" name="v3" value="" size=6><br>

QTY:<INPUT TYPE="text" name="q2" value="1" size=3><br>

STOTAL:<input name="stotal" type='text'>

TOTAL:<input name="total" type='text'>

<input type="submit" value="calculate" onClick="calcit();return false;">

</FORM>

</BODY>

</html>

<html>

<head>

<script language="JavaScript">

var N=3 // number of VAL/QTY pairs

function calcit()

{

stotal = 0;

f = document.forms[0];

for(i=0 ; i<N ; i++)

{

if (f.elements[i*2].value >= 0)

{

v = f.elements[i*2].value;

q = f.elements[i*2+1].value;

t1 = v * q;

}

stotal += t1;

}

f.stotal.value = "$" + stotal;

//10%tax

total = stotal * 1.0775;

f.total.value = "$" + total;

}

</script>

</HEAD>

<BODY>

<FORM>

VAL1:<INPUT TYPE="text" name="v1" value="" size=6><br>

QTY:<INPUT TYPE="text" name="q1" value="1" size=3><br>

VAL2:<INPUT TYPE="text" name="v2" value="" size=6><br>

QTY:<INPUT TYPE="text" name="q2" value="1" size=3><br>

VAL3:<INPUT TYPE="text" name="v3" value="" size=6><br>

QTY:<INPUT TYPE="text" name="q2" value="1" size=3><br>

STOTAL:<input name="stotal" type='text'>

TOTAL:<input name="total" type='text'>

<input type="submit" value="calculate" onClick="calcit();return false;">

</FORM>

</BODY>

</html>

f.total.value = "$" + roundOff(total, 2);

f.stotal.value = "$" + roundOff(stotal, 2);

Michel

Try to roundOff(0.11,2) with script you suggested

you will get 11 instead of 0.11

timothy1, this is bugs free solution. (TESTED)

Hope this one is better than above buggy solution

from developer.netscape.com

function roundOff(total,prec)

{total=""+Math.round(total

inx=total.indexOf(".")

if(inx!=-1) total=total.substring(0,in

while(total.length<prec) total="0"+total;

alert(total)

total=total.substring(0,to

return total;

}

I check 99.9% of my answers.

In this case I cut and pasted a script from netscape and I really expected to work without even thinking it might be wrong. I am at home on a crap pc so I skipped testing for once.

Timothy: I am sorry if the script did not work. Feel free to reject my answer and if kolloegovs script works better, let him answer instead. I would normally give you one of my (tested) scripts, but they are not on my home pc. I apologise.

Michel

I will try the other one also, but I think the first will fit the need I haven't taken Java yet only "C", but as you know they seem to be similiar in syntax and grammer.

Interestingly enough, you mentioned this came from Netscape?

I ran it through IE4 and it worked fine.

You don't happen to know of a online reference or tutorial that list all those math.round(), math.pow(), parseInt(), etc. functions that I see in the code and tells what they are for?

I can guess at most, but a list would be cool!

I'll check out that URl,,,,developer.netscape.

Again Thanks,

Tim

http://developer.netscape.com/ also has the javascript reference

It seems the site is down for maintenance so I cannot give you the exact URL of the math stuff.

Javascript syntax looks a lot like java especially in the math package.

Math.round rounds down to the nearest integer

Math.pow(x,y) will compute x to the power of y - may cause overflow for large values of y

for IEs look at http://msdn.microsoft.com/scripting/

Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

All Courses

From novice to tech pro — start learning today.

<html>

<head><title>Round off Long numbers</title>

<script>

function roundOff(value, precision)

{

value = "" + value //convert value to string

precision = parseInt(precision);

var whole = "" + Math.round(value * Math.pow(10, precision));

var decPoint = whole.length - precision;

if(decPoint != 0)

{

result = whole.substring(0, decPoint);

result += ".";

result += whole.substring(decPoint, whole.length);

}

else

{

result = whole;

}

return result;

}

</script>

</head>

<body>

<h3><center>Testing Rounding off Long floating point

numbers</center></h3>

<form name=myForm>

<pre>

Enter a long number <input type=text name=text1

value=5.199999999999999999

Enter precision <input type=text name=text2 value=2 size=2>

Result <input type=text name=text3>

</pre>

<center>

<input type=button value=Calculate onClick="myForm.text3.valu

roundOff(myForm.text1.valu

</center>

</form>

</body>

</html>