2.4. Rounding Floating-Point Numbers

NN 2, IE 3

2.4.1. Problem

You want to round a floating-point value to the nearest whole number.

2.4.2. Solution

Use the Math.round( ) method on the value:

var roundedVal = Math.round(floatingPointValue);

The operation does not disturb the original value. Capture the rounded result in a variable.

2.4.3. Discussion

The algorithm that the Math.round( ) method uses is that any floating-point value that is greater than or equal to x.5 is rounded up to x+1; otherwise, the returned value is x.

JavaScript's Math object contains some other useful methods for trimming floating-point numbers of their fractional parts. Math.floor( ) and Math.ceil( ) return the next lowest and next highest integer values, respectively. For example, Math.floor(3.25) returns 3, while Math.ceil(3.25) returns 4. With negative values, the rules still apply, but the results seem backward at first glance: Math.floor(-3.25) returns the next lowest integer, -4; Math.ceil(-3.25) returns -3. For positive values, you can use the Math.floor( ) method as a substitute for what some other languages treat as the integer of a number.

Anytime a floating-point number evaluates to a number equal to an integer value, the decimal and digits to the right of the decimal go away. A variable can hold a floating-point number in one statement and be modified to an integer in the next. This drives some programmers crazy because they were indoctrinated by other languages to treat each type of number as a different data type.

2.4.4. See Also

Section 2.0.2 in the introduction of this chapter.