首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将带前导零的基数10转换为字符串

如何将带前导零的基数10转换为字符串
EN

Stack Overflow用户
提问于 2015-10-22 22:52:46
回答 2查看 125关注 0票数 1

有没有办法将带前导零的基数十转换成javascript中的字符串?似乎javascript没有带前导零的基数10的概念。

我想要的例子

代码语言:javascript
复制
function turnBaseTenNumberToString(num) {
  ...
}

console.log(turnBaseTenNumberToString(010));
// outputs
// '010'

我要指出的是,以下内容不起作用

Number.prototype.toString()

代码语言:javascript
复制
console.log((010).toString(10))
// outputs
// '8'

我假设这是调用toString之前的数字评估的结果。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-10-22 23:10:53

问题是十进制整数文本不能有前导零:

代码语言:javascript
复制
DecimalIntegerLiteral ::
    0
    NonZeroDigit DecimalDigits(opt)

然而,ECMAScript 3允许(作为可选扩展)解析基8中带有前导零的文字:

代码语言:javascript
复制
OctalIntegerLiteral ::
    0 OctalDigit
    OctalIntegerLiteral OctalDigit

ECMAScript 5禁止在严格模式下这样做:

在处理严格模式代码(见10.1.1)时,一致性实现不能扩展NumericLiteral的语法以包括B.1.1中描述的OctalIntegerLiteral。

ECMAScript 6引入了BinaryIntegerLiteral和OctalIntegerLiteral,所以现在我们有了更连贯的文字:

  • BinaryIntegerLiteral,以0b0B作为前缀。
  • OctalIntegerLiteral,以0o0O作为前缀。
  • HexIntegerLiteral,以0x0X作为前缀。

旧的OctalIntegerLiteral扩展已经被重命名为LegacyOctalIntegerLiteral,这仍然允许在非严格模式下。

因此,010是一个语法错误,某些浏览器只能在非严格模式下才能容忍这种错误。但是你不能依赖它,即使这样,它也会产生数字8

票数 4
EN

Stack Overflow用户

发布于 2015-10-22 23:12:13

按照执行部分

将带前导零的基数10转换为字符串

好的,JavaScript把一个前导零作为一个指示值在基数8中的指标。因此,当将数字定义为010时,十进制中的数字值是8 (1 * 8^1 + 0 * 8^0)

如果您想避免这种情况,您应该在字符串表示中传递一个数字,并在需要时删除一个前导零。

代码语言:javascript
复制
function turnBaseTenStringToNumber(num) {
  return parseInt(num.replace(/^0+/, ''));
}

console.log(turnBaseTenStringToNumber(`010`));
// outputs 10

有关更多详细信息,请参见带有基数的数字文档

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33292081

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档