JavaScript将整数转换为字符串

5

我在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       

我该如何获取000000或者"000000"?

在编程中,数字 000000 对解释器来说只是 0,而 param 保存着这个值。使用字符串引号将其“绕过”。 - KarelG
@KarelG 我无法更改该方法,这意味着我无法更改结果。 - Sam Su
3个回答

1
如果你想区分000000和0,是不可能的。在离开函数之前,000000会被“转换”为0。
如果你想打印前导零,请尝试类似以下的方法:
function intToLeadingZerosString(myint){
  var s= myint.toString(10);
  return Array( 6-s.length+1 ).join("0") + s;
}
alert(intToLeadingZerosString(param));

或者:

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());

0
为什么在返回时不将其转换为字符串? 因为,通过return语句发送的值将通过“按值复制”的概念返回。它也通过复制(即按值复制)分配给参数。所以,000000转换为0。之后,将其转换为字符串将是“0”。
    function getFromDatabase(){
      return '000000'; 
    }

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

将其作为字符串返回,如果需要,稍后再将其转换为整数。这将是处理您的情况的最佳方式。


0
因为你的函数返回的是“int”值。 尝试修改为return '000000';

我无法更改该方法,这意味着我无法更改结果。 - Sam Su

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接