HTML and CSS Reference
In-Depth Information
Rounding Values
Online ordering is one of the most common uses of the Web and requires calculations of
monetary values. For example, suppose you needed to calculate a 2% sales tax on a cus-
tomer's purchase of an item that costs $25.49. One way of doing this is to use the follow-
ing code, which multiplies the price by the tax rate and stores the value in the
tax
variable:
var price = 25.49;
var taxrate = 0.02;
var tax = price*taxrate;
The tax value from this calculation is 0.5098, which is not an acceptable currency value.
You could use the
toFixed()
function discussed earlier to display the result to only two
decimal places. However, recall that the
toFixed()
function doesn't change a vari-
able's value, only how it is displayed. Instead, you need to round the actual value of the
tax
variable to the hundredths digit. There are no
Math
methods for rounding values
to specific numbers of decimal places. To round a currency value to two digits, you first
must multiply the value by 100, apply the
Math.round()
method to round the value to
the nearest integer, and then divide that result by 100. For the tax rate example, 0.5098
multiplied by 100 is 50.98; that value rounded to the nearest integer is 51; and dividing
that number by 100 results in a currency value of $0.51. In JavaScript, this sequence of
operations can be placed in a single expression as follows:
Math.round(100*tax)/100;
In general, if
n
is the number of decimal places to which you want to round a value, you
multiply and divide the value by
10
n
. You could use this fact to create a custom func-
tion to round values to a specified number of decimal places. The following code uses
the
pow()
method of the
Math
object to create a general rounding function that rounds
values to
n
decimal places:
function roundValue(value, n) {
return Math.round(Math.pow(10,n)*value)/Math.pow(10,n);
}
The
roundValue()
function multiplies the
value
variable by a power of 10, rounds it
to the nearest integer, and then divides it by the same power of 10. The end result is
the
value
variable rounded to the number of digits specified by the
n
parameter. The
roundValue()
function also allows for a negative value for the
n
parameter. This has
the effect of rounding a value to the nearest ten, hundred, thousand, and so forth. For
example, the expression
roundValue(238414, -3)
rounds the value to the nearest thousand, returning a value of 238,000.
Converting Between Numbers and Text
Sometimes you might need to convert a number to a text string and vice versa. One way
to convert a number to a text string is by using the
+
operator to add a text string to a
number. For example, the following code uses the
+
operator to concatenate a numeric
value with an empty text string:
testNumber = 123; // numeric value
testString = testNumber + “”; // text string
The result is to create a text string containing the characters
123
.