# 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.