Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/382.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么javascript parseInt忽略字符串中的前导零?_Javascript - Fatal编程技术网

为什么javascript parseInt忽略字符串中的前导零?

为什么javascript parseInt忽略字符串中的前导零?,javascript,Javascript,我正在尝试将字符串转换为数字,即“09” 获取前导零的数字的最佳方法是什么?如果有人解释一下,为什么设计的parseInt不关心前导零,那就更好了。一个int不能有前导零,因为它们没有任何数学意义 为了存储一个数字,语言使用二进制表示法(不要忘记最后所有的数字都是0和1)。此表示与9、09或00009相同。当必须打印数字时,它会转换回字符串表示形式,因此会丢失前导零 如果需要存储/记住0,则唯一的选择是存储数字的字符串表示形式 可以同时存储数字和字符串表示,如下所示: function MyIn

我正在尝试将字符串转换为数字,即“09”


获取前导零的数字的最佳方法是什么?如果有人解释一下,为什么设计的parseInt不关心前导零,那就更好了。

一个
int
不能有前导零,因为它们没有任何数学意义

为了存储一个数字,语言使用二进制表示法(不要忘记最后所有的数字都是0和1)。此表示与9、09或00009相同。当必须打印数字时,它会转换回字符串表示形式,因此会丢失前导零

如果需要存储/记住0,则唯一的选择是存储数字的字符串表示形式

可以同时存储数字和字符串表示,如下所示:

function MyInt(s){
    this.asString = s;
    this.num = parseInt(s);
}


var i = new MyInt("09");
console.log(i.num); // 9
console.log(i.asString); // 09

请注意,前导0对于int没有任何值。如果要用于显示,请使用字符串,对于计算部分,请使用parseInt(someval)

一个
int
不能有前导零,因为它们没有任何数学意义

为了存储一个数字,语言使用二进制表示法(不要忘记最后所有的数字都是0和1)。此表示与9、09或00009相同。当必须打印数字时,它会转换回字符串表示形式,因此会丢失前导零

如果需要存储/记住0,则唯一的选择是存储数字的字符串表示形式

可以同时存储数字和字符串表示,如下所示:

function MyInt(s){
    this.asString = s;
    this.num = parseInt(s);
}


var i = new MyInt("09");
console.log(i.num); // 9
console.log(i.asString); // 09

请注意,前导0对于int没有任何值。如果要用于显示目的,请使用string,对于计算部分,请使用parseInt(someval)
parseInt
接受两个参数:
string
radix

radix
告诉
parseInt
如何将字符串转换为数字

如果不使用
基数
,则:

如果基数未定义或为0(或不存在),JavaScript将假定:

  • 如果输入字符串以“0x”或“0x”开头,则基数为16(十六进制),并解析字符串的其余部分
  • 如果输入字符串以“0”开头,则基数为8(八进制)或10(十进制)。
    具体选择哪个基数取决于实现。ECMAScript 5指定使用10(十进制),但并非所有浏览器都支持这一点因此,在使用
    parseInt
    时,请始终指定基数

  • 如果输入字符串以任何其他值开头,则基数为10(十进制)


也就是说,您正在使用一个非缩写名称为“Parse Integer”的函数。您不能让它保留前导零,因为前导零没有数学值。

parseInt
采用两个参数:
string
radix

radix
告诉
parseInt
如何将字符串转换为数字

如果不使用
基数
,则:

如果基数未定义或为0(或不存在),JavaScript将假定:

  • 如果输入字符串以“0x”或“0x”开头,则基数为16(十六进制),并解析字符串的其余部分
  • 如果输入字符串以“0”开头,则基数为8(八进制)或10(十进制)。
    具体选择哪个基数取决于实现。ECMAScript 5指定使用10(十进制),但并非所有浏览器都支持这一点因此,在使用
    parseInt
    时,请始终指定基数

  • 如果输入字符串以任何其他值开头,则基数为10(十进制)


也就是说,您使用的函数的非缩写名称是“Parse Integer”。您不能让它保留前导零,因为前导零没有数学值。

parseInt()返回一个数字。从数学上讲,前导零是没有意义的,所以9=09=009=9.0000,等等。如果你想保留前导零,你需要将其作为字符串保留。简单来说,
09
当被视为数字时等于
9
。你还希望得到什么数字?你能解释一下你想做什么吗?也许parseInt不是您想要的,如果它是一个填充问题,您可以在后面设置数字的格式,使其具有前导零。parseInt()返回一个数字。从数学上讲,前导零是没有意义的,所以9=09=009=9.0000,等等。如果你想保留前导零,你需要将其作为字符串保留。简单来说,
09
当被视为数字时等于
9
。你还希望得到什么数字?你能解释一下你想做什么吗?也许parseInt不是你想要的,如果它是一个填充问题,你总是可以在后面格式化数字,使其具有前导零。确切地说,如果你想显示前导零,将其转换为字符串,并在控制器端添加前导零。确切地说,如果要显示前导零,请将其转换为字符串,并在控制器末端添加前导零。