JavaScript Math Object: Complete Guide
Learn the JavaScript Math object and its most useful methods for calculations, rounding, random values, and mathematical constants.
The JavaScript Math object is a built-in collection of mathematical constants and functions. You do not create a Math instance. You call its methods directly: Math.round(3.7), Math.random(), Math.max(5, 10).
Math is always available without importing anything. It works in browsers and Node.js identically.
console.log(Math.PI);
console.log(Math.round(3.7));
console.log(Math.max(5, 12, 3));
console.log(Math.random());This prints approximately 3.141592653589793, then 4, then 12, then a random decimal like 0.7342. Each call stands alone because every Math method returns a new value.
Rounding methods
Math provides three rounding methods. They differ in the direction they round when the number has a fractional part.
console.log(Math.round(3.7));
console.log(Math.floor(3.7));
console.log(Math.ceil(3.7));Math.round prints 4 because 3.7 is closer to 4 than to 3. Math.floor prints 3 because it always rounds down. Math.ceil prints 4 because it always rounds up.
The behavior with negative numbers is less obvious:
console.log(Math.floor(-2.3));
console.log(Math.ceil(-2.3));
console.log(Math.round(-2.3));Math.floor prints -3 because "down" on the number line means more negative. Math.ceil prints -2 because "up" means less negative. Math.round prints -2 because -2.3 is closer to -2 than to -3.
For a deeper comparison of all three, see the guide to rounding numbers with floor, ceil, and round.
Random numbers
Math.random() returns a decimal between 0 (inclusive) and 1 (exclusive). Every call produces a different value.
console.log(Math.random());
console.log(Math.random());Two calls print two different decimals, each between 0 and just under 1. To get a random integer in a range, combine Math.random with Math.floor:
function rollDie() {
return Math.floor(Math.random() * 6) + 1;
}
console.log(rollDie());This prints a number from 1 to 6. Multiplying by 6 gives a range of 0 to 5.999..., floor brings it to 0 through 5, and adding 1 shifts to 1 through 6.
For more patterns including random array elements and seeded generation caveats, see the guide to random number generation.
Min, max, and absolute value
Math.max and Math.min find the largest or smallest value from any number of arguments. They accept individual numbers, not arrays.
console.log(Math.max(5, 12, 3, 8));
console.log(Math.min(5, 12, 3, 8));The first prints 12, the largest. The second prints 3, the smallest.
To find the max or min of array values, spread the array into individual arguments with the spread operator:
const scores = [88, 92, 75, 96];
console.log(Math.max(...scores));This prints 96, the highest score in the array. The spread operator unpacks the array into separate arguments so Math.max can compare them individually, since Math.max never accepts an array directly.
Math.abs returns the absolute value of a number, stripping any negative sign so the result is always zero or positive:
console.log(Math.abs(-42));
console.log(Math.abs(42));Both print 42, since Math.abs treats -42 and 42 identically once the sign is removed.
Powers, roots, and constants
Math.pow raises a number to a power, and Math.sqrt returns its square root. These cover the most common exponent and root calculations you will need for geometry and scaling.
console.log(Math.pow(2, 10));
console.log(Math.sqrt(144));The first prints 1024 (2^10). The second prints 12.
Common mathematical constants are available as properties:
| Constant | Value |
|---|---|
| Math.PI | 3.141592653589793 |
| Math.E | 2.718281828459045 |
| Math.SQRT2 | 1.4142135623730951 |
Use Math.PI for circle calculations:
const radius = 5;
const area = Math.PI * Math.pow(radius, 2);
console.log(area);This prints approximately 78.54, the area of a circle with radius 5.
Common mistakes
Trying to create a Math instance with new Math() throws a TypeError. Math is not a constructor. Call its methods directly.
Passing an array to Math.max without spreading returns NaN. The expression Math.max([1, 2, 3]) does not work because max expects individual numeric arguments. Use Math.max(...arr) instead.
Expecting Math.random to be cryptographically secure is incorrect. Math.random is suitable for games and UI randomness but not for security tokens or password generation. Use crypto.getRandomValues for cryptographic needs.
Rune AI
Key Insights
- Math is a built-in object with static methods. No constructor needed.
- Math.round, Math.floor, and Math.ceil are the three main rounding methods.
- Math.random() returns a decimal between 0 (inclusive) and 1 (exclusive).
- Math.max and Math.min find the largest or smallest value from arguments.
- Math.PI and Math.E provide common mathematical constants.
Frequently Asked Questions
Do I need to create a new Math object?
What is the difference between Math.round and Math.floor?
Can I use Math methods on BigInt values?
Conclusion
The Math object provides mathematical constants like Math.PI and methods for rounding, random numbers, min/max, powers, and trigonometry. It is always available without importing anything. Remember that Math methods return new values and never modify their inputs.
More in this topic
Using Reflect and Proxy Together in JavaScript
Proxy traps intercept operations, but Reflect is what makes them behave correctly. Learn why Reflect belongs inside every trap and what breaks when you skip it.
Top JS Array Methods Interview Questions to Know
The array method questions that come up most often in JavaScript interviews, answered directly with short examples: map vs forEach, mutating vs non-mutating methods, reduce, and more.
JavaScript Reflect API: Advanced Architecture
The Reflect object exposes JavaScript's own internal operations as plain functions. Learn every Reflect method, what it returns, and why it exists as its own API.