# Math.floor() Function in Javascript, Uses, Limitations, Type Coercion

### Introduction

The `Math.floor()` function Rounds a number down to its closest integer, for example, `Math.floor(5.99)` returns 5.

## What is Math.floor() in Javascript?

`Math` is a Javascript Built-in object with properties and methods for Mathematical function, constants.

The `Math.floor()` is one of the Static Methods in Javascript that takes a `Number` and rounds it down.

``````console.log(Math.floor(5));
// 5

console.log(Math.floor(7.999));
// 7

console.log(Math.floor(7.009));
// 7

console.log(Math.floor(-3.95));
// -4

console.log(Math.floor(-3.05));
// -4
``````

From the Example, you can see that `Math.floor()` returns a `Number` and it is always the largest integer less than or Equal to the provided number.

## Math.floor() and Type Coercion

One of the known features of Javascript is the “Type Coercion”. Many people might think it is just a bad design, But in my opinion, if you know the type and also what a method is going to return, you should not be worried.

The type coercion happens when one type is converted into another. For example, a `Number` can turn into `String`.

``````console.log(Math.floor(27.99));
// 27

// But Also
console.log(Math.floor("27.99"));
// 27

// And even
console.log(Math.floor("27.99" - 10));
// 17
``````

So the `Math.floor()` function expects a `Number` as an argument but if you provide a number as `String` type, it converts the string to an integer and returns an integer? whaaaa? ## Limitation

One of the caveats of the `Math.floor()` function is passing `null` as an argument.
You probably expect it to return `NaN` (not a number), which is something that logically should be true but it returns 0 instead!

``````console.log(Math.floor(null));
// 0
``````

There are other Static methods for `Math` that might be useful to you based on your project requirements. I will be writing an article to cover different Methods and create a small ROI calculator shortly, so stay tuned.