我尝试使用下面的递归函数来实现一个相当简单的十进制到二进制转换器:神秘的2在我的JavaScript十进制输出到二进制转换器?
function dectobin(d) {
if (0 >= d) { return 0; }
else if (1 == d) { return 1; }
else {
return 10 * dectobin(Math.floor(d/2)) + (d % 2);
}
}
现在的问题是,当我用70007测试了一下,似乎是1一些溢出在最后当最后一个条目从堆栈弹出时递归。所以一旦dectobin(35003)返回100010001011101,它将被缩放10到1000100010111010,并且假设要添加1。除了添加1之外,它增加了2,所以答案变成:1000100010111012。现在我已经检查了我的逻辑和数学,发现没有错误,所以我有一种感觉,这是造成这种语言的内部结构错误。所以如果有人能帮助我,并向我解释什么是最令人欣慰的问题。提前致谢。使用您可以转换小数为二进制(串):
...或者你可以简单地使用:'70007..toString(2)' – zzzzBov 2012-03-06 05:37:37