【问题标题】:Converting from number to string gives strange number in Javascript [duplicate]在Javascript中从数字转换为字符串会产生奇怪的数字[重复]
【发布时间】:2015-02-26 10:31:54
【问题描述】:

所以我看到了这个奇怪的场景。我想在 Node.js 中将数字转换为字符串,得到以下结果。

01010100132.toString()

变成

"136347738"

谁能给我解释一下?

【问题讨论】:

标签: javascript string node.js


【解决方案1】:

任何以0 为前缀的数字常量都是八进制文字(假设其所有数字都是有效的八进制数字)。

var i = 010; // 8 decimal

【讨论】:

  • 01010100133.toString() 给出 136347739。我认为八进制不包含 8 或 9。
  • @Anders 01010100133 是八进制。 136347739 是十进制。
  • 136347739 不再是八进制。 136347739 是八进制数 01010100133十进制 表示。如果我输入八进制文字 011,那就是十进制 9,这就是我输出该值时 JavaScript 将打印的内容。
  • 为什么将其转换为十进制可能是我的问题。
  • @Anders 它没有。它将其转换为数字。 JavaScript(以及几乎所有其他语言)碰巧有偏见,因为它们默认以 10 为底输出数字。在内部它只是一个数字,以二进制物理存储,但它没有“基数”。它只是一个数字,在您需要将它们写下来或将它们输出到屏幕之前,数字没有基础。
猜你喜欢
  • 2016-02-14
  • 1970-01-01
  • 1970-01-01
  • 2019-02-21
  • 2011-12-27
  • 1970-01-01
  • 1970-01-01
  • 2019-11-20
  • 2014-07-05
相关资源
最近更新 更多