js> (5).toString(2)
101
js> 5.toString(2)
js: "<stdin>", line 53: missing ; before statement
js: 5.toString(2)
js: ..........^
js>
答案 0 :(得分:6)
Javascript假设(奇怪)数字后跟一个点表示点是小数点。这是违反直觉的,但至少它是可靠的。
关于如何处理这个问题,您有几种选择:
(5).toString(2); #1
5..toString(2); #2
5.0.toString(2); #3
5 .toString(2); #4
Stackoverflow的语法高亮显示器向您显示,在#2和#3中,第一个点被认为是数字的一部分,第二个点被认为是运算符。在#4中,我们可以看到空格告诉解析器数字已经结束。
答案 1 :(得分:1)
因为没有括号,5.toString()
中的点被解释为小数点。如果没有括号,解释器会将该字符序列解释为浮点字面值。
答案 2 :(得分:0)
在Javascript中,数字可能是浮点数,因此5.0
是有效数字。当您使用5.toString
时,toString
似乎是数字的小数部分。 Javascript的解析器不处理这种情况。
其他一些语言(例如Ruby)处理方式不同。
答案 3 :(得分:0)
解释器首先尝试将.
解析为小数点,因此它期望toString
为数字。请注意,以下内容有效,因为它已经收到了小数:
js> 5.0.toString(2); // -> "101"