在Javascript中,从数字转换为字符串会产生奇怪的数字
所以我看到了这个奇怪的场景。我想在Node.js中将一个数字转换成一个字符串,结果如下在Javascript中,从数字转换为字符串会产生奇怪的数字,javascript,string,node.js,Javascript,String,Node.js,所以我看到了这个奇怪的场景。我想在Node.js中将一个数字转换成一个字符串,结果如下 01010100132.toString() 变成 "136347738" 有人能给我解释一下吗?任何前缀为0的数值常量都是八进制文字(假设其所有数字都是有效的八进制数字) 参见01010100133。toString()给出136347739。我以为八进制不包含8或9。@Anders01010100133是八进制136347739是十进制。136347739不再是八进制136347739是八进制数的十进
01010100132.toString()
变成
"136347738"
有人能给我解释一下吗?任何前缀为
0
的数值常量都是八进制文字(假设其所有数字都是有效的八进制数字)
参见01010100133。toString()给出136347739。我以为八进制不包含8或9。@Anders
01010100133
是八进制<代码>136347739是十进制。136347739
不再是八进制136347739
是八进制数的十进制表示形式01010100133
。如果我输入八进制文字011
,那就是十进制9
,这就是JavaScript在我输出该值时将打印的内容。那么,为什么要将其转换为十进制可能是我的问题。@Anders它没有。它将其转换为一个数字。JavaScript(以及几乎所有其他语言)碰巧存在偏差,因为它们默认以10为基数输出数字。在内部,它只是一个数字,物理上以二进制形式存储,但它没有“基”。它只是一个数字,在你需要写下来或输出到屏幕上之前,数字没有基数。
var i = 010; // 8 decimal