algorithm - 反向打印数字系列的Javascript程序

标签 algorithm javascript

我不明白为什么下面的 JavaScript 程序返回答案 Infinity。我究竟做错了什么?我是新手,希望得到详细的解释!

请注意,这需要仅使用数学和数学函数来完成,不能使用字符串函数或数组!

<script type = "text/javascript">

var input;
var rev = 0;

input=window.prompt ("Please enter a 5-digit number to be reversed.");

input = input * 1;

while (input > 0)
{
   rev *= 10;
   rev += input % 10;
   input /= 10;
}
document.write ("Reversed number: " + rev);

</script>

最佳答案

您的行:input/= 10; 没有生成整数。 你最终得到这样的序列:

input  rev
1234.5 5
123.45 54.5
12.345 548.45

这永远不会达到 0,因此您的 while 条件一直持续到达到 1e-323,然后数字超出精度并变为 0。

如果您将 input/= 10; 行替换为 input = Math.floor(input/10); 那么它就可以工作了。

因为这是代码高尔夫,所以您可能不想使用 Math.floor。还有一个小一点的,我再看看能不能找到。

您可以使用 input = ~~(input/10); 前提是 input 始终为正值。

关于algorithm - 反向打印数字系列的Javascript程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6994294/

相关文章:

javascript - 页面加载时Vue Infinite Loading多个请求问题

javascript - $watch 在 AngularJS 中发生了意外的多个事件?

php - 通过 onClick javascript 函数使用 PHP 更新 MySql 数据库

c++ - 给定日期范围生成工作日日期的算法

java - 增加随机生成的数字

algorithm - 什么是大 O,这段代码的上限

javascript - 创建星号分隔字符串的 JavaScript 对象

java - 我被 alpha-beta 剪枝算法实现所困扰

algorithm - 寻找比较二叉树的更好解决方案

javascript - meteor JS : How should I bind events to the window in Meteor?