Sam Su
Sam Su

Reputation: 6822

JavaScript convert int to String

I'm facing strange convertion in JavaScript:

    function getFromDatabase(){
      //the result may be gotten from database or some complex methods and CANT be changed!
      return 000000;
    }

    var param = getFromDatabase();
    alert(param);// -> 0        
    alert(param.toString());// -> 0         
    alert("" +param + "");// -> 0       

How can I get 000000 or "000000" ?

Upvotes: 5

Views: 8217

Answers (3)

Mathias
Mathias

Reputation: 1500

If you want to differentiate 000000 from 0, you can't. 000000 is "converted" to 0 before leaving the function.

If you want to print leading zeros, try something like

function intToLeadingZerosString(myint){
  var s= myint.toString(10);
  return Array( 6-s.length+1 ).join("0") + s;
}
alert(intToLeadingZerosString(param));

Or:

Number.prototype.toStringLeading = function() {
   var s = this.toString(10);
   return Array( (arguments.length?arguments[0]:6)-s.length+1 ).join("0") + s;
};
alert(param.toStringLeading(6));
alert(param.toStringLeading());

Upvotes: 1

user2680139
user2680139

Reputation:

Because your function returns 'int' value. Try to change on return '000000';

Upvotes: 0

vivek_nk
vivek_nk

Reputation: 1600

why don't you convert it to string while returning it? because, value sent by return statement is will be returned by concept of "copy by value". Also it is assigned to param by copying it (i.e. copy by value). So, 000000 converts to just 0. After that, converting it to String will be "0".

    function getFromDatabase(){
      return '000000'; 
    }

    var param = getFromDatabase();      
    alert(param);// -> 000000         
    alert(isNaN(param)?"":parseInt(param));// -> 0

Return as string and later convert it to int if required. This will be the best way of handling your scenario.

Upvotes: 0

Related Questions