Home > School > JavaScript Float to Int

JavaScript Float to Int

In JavaScript how can you convert a float like 3.3333 to just 3. Well there are many ways like Math.floor, Math.ceil, Math.round, parseInt, and toFixed(0). One problem which is fastest and what are the results of the new number? I made a test page that finds this out by looping 10000000 times converting the number 5.97655676758 into a integer and outputting the new number and time it took to compute.

  var j = 5.97655676758;
  //Math.floor  
  start = new Date();
  for (var i = 0; i <10000000; i++) {
    var k = Math.floor(j);
  }
  document.getElementById('results').innerHTML = "Floor: " + (new Date() -start) + " Result: " + k + "<br/>";
  //Math.ceil
  start = new Date();
  for (var i = 0; i <10000000; i++) {
    var k = Math.ceil(j);
  }
  document.getElementById('results').innerHTML += "Ceil: " + (new Date() -start) + " Result: " + k + "<br/>";
  //Math.round
  start = new Date();
  for (var i = 0; i <10000000; i++) {
    var k = Math.round(j);
  }
  document.getElementById('results').innerHTML += "Round: " + (new Date() -start) + " Result: " + k + "<br/>";
  //parseInt
  start = new Date();
  for (var i = 0; i <10000000; i++) {
    var k = parseInt(j);
  }
  document.getElementById('results').innerHTML += "parseInt: " + (new Date() -start) + " Result: " + k + "<br/>";
  //toFixed
  start = new Date();
  for (var i = 0; i <10000000; i++) {
    var k = j.toFixed(0);
  }
  document.getElementById('results').innerHTML += "toFixed: " + (new Date() -start) + " Result: " + k + "<br/>";

The results were:
Mac OS X 10.6.7 Safari
Floor: 294 Result: 5
Ceil: 316 Result: 6
Round: 337 Result: 6
parseInt: 868 Result: 5
toFixed: 4025 Result: 6
Mac OS X 10.6.7 FF4
Floor: 151 Result: 5
Ceil: 164 Result: 6
Round: 173 Result: 6
parseInt: 122 Result: 5
toFixed: 1721 Result: 6

From these results we can see that for speed Math.floor is the best being the fastest in Safari and second fastest in FF4. While for both speed and accuracy Math.round is king.

Advertisement
  1. No comments yet.
  1. No trackbacks yet.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Connecting to %s

Follow

Get every new post delivered to your Inbox.