Javascript评估数字以零作为小数开头

标签 javascript parsing

我想评估以零开头的数字作为十进制数。

例如,让我们定义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/

相关文章:

javascript - 检测框架位置/内容已更改

javascript - 什么类型的对象/属性是原型(prototype) getter 和 setter?

javascript - 如何使 ChaiJS 'expect' 函数在 NodeJS 'test' 文件夹内的所有文件中可用?

Linux shell 命令反转变长文本记录的字段顺序

javascript - 使用 JavaScript 检测点击目标?

javascript - 在 javascript 文件中使用动态 html

java - 在java中使用GSON解析JSON SCHEMA而不使用预定义对象

algorithm - 如何使用斯坦福解析器从给定的分段节点生成英文句子

c++ - 解析 xpath 表达式

c# - 解析 VBA Const 声明...使用正则表达式