我正在尝试将字符串转换为数字,即" 09"
parseInt('09') //returns 9 always
获得前导零的数字的最佳方法是什么?如果有人解释,为什么设计的parseInt不会关注前导零,这会更好。
答案 0 :(得分:7)
int
不能有前导零,因为它们没有任何数学意义。
要存储数字,语言使用二进制表示(不要忘记最后的所有内容都是0和1)。此表示形式对于9,99或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
请注意, int 的 0没有任何值。如果要用于显示目的,请使用字符串,对于计算部分,请使用 parseInt(someval)
答案 1 :(得分:1)
parseInt
有两个参数:string
和radix
。
radix
告诉parseInt
如何将字符串转换为数字。
如果您离开radix
,the rules are somewhat simple for how it decides what radix
to use:
如果radix未定义或0(或不存在),则JavaScript假定以下内容:
- 如果输入字符串以" 0x&#34开头;或" 0X",基数为16(十六进制),并解析字符串的其余部分。
如果输入字符串以" 0"开头,则基数为八(八进制)或十进制(十进制)。
究竟选择哪个基数是依赖于实现的。 ECMAScript 5指定使用10(十进制),但并非所有浏览器都支持此功能。 因此,在使用parseInt
时始终指定基数。如果输入字符串以任何其他值开头,则基数为10(十进制)。
也就是说,您使用的是非缩写名称为" Parse Integer的函数。"你不能让它保留前导零,因为前导零没有数学价值。