Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Javascript中,从数字转换为字符串会产生奇怪的数字_Javascript_String_Node.js - Fatal编程技术网

在Javascript中,从数字转换为字符串会产生奇怪的数字

在Javascript中,从数字转换为字符串会产生奇怪的数字,javascript,string,node.js,Javascript,String,Node.js,所以我看到了这个奇怪的场景。我想在Node.js中将一个数字转换成一个字符串,结果如下 01010100132.toString() 变成 "136347738" 有人能给我解释一下吗?任何前缀为0的数值常量都是八进制文字(假设其所有数字都是有效的八进制数字) 参见01010100133。toString()给出136347739。我以为八进制不包含8或9。@Anders01010100133是八进制136347739是十进制。136347739不再是八进制136347739是八进制数的十进

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

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