我想评估以零开头的数字作为十进制数。
例如,让我们定义convertToDec
convertToDec(010) => 10
convertToDec(0010) => 10
convertToDec(0123) => 123
等..
因为所有以 0 开头的 js 数字都是以 8 为底计算的,所以我尝试这样做:
function convertToDec(num){
return parseInt(num.toString(), 10);
}
但是 toString 函数解析以 8 为基数的数字。
有什么建议吗?
谢谢!
最佳答案
如果您在 JavaScript 中字面编写0010
,那么它将被视为八进制数。这就是解析器的工作方式。
来自 MDN's docs :
- 十进制整数字面量由不带前导 0(零)的数字序列组成。
- 整数文字上的前导 0(零)表示它是八进制的。八进制整数只能包含数字 0-7。
- 前导 0x(或 0X)表示十六进制。十六进制整数可以包括数字 (0-9) 和字母 a-f 和 A-F。
- 前导 0b(或 0B)表示二进制。二进制整数只能包含数字 0 和 1。
因此,当您编写 convertToDec(0010)
时,您的浏览器会将其解释为 convertToDec(8)
。它已经被“转换”为 8
,因为您使用了“八进制文字”。
如果您想要文字值“0010”
,那么您需要使用字符串。
parseInt("0010", 10); // 10
关于Javascript评估数字以零作为小数开头,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33153039/