You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

JavaScript循环问题:如何将0.01执行365次翻倍操作?

解决365次便士翻倍的For循环问题

嘿,我一眼就看出问题出在哪啦!你原来的循环逻辑完全搞反了——你要的是执行365次翻倍操作,但现在的代码是让数值增长到接近365时就停止,这根本不是一回事儿~

为什么原来的代码不行?

咱们算个小账:0.01便士翻倍到超过365英镑只需要大概16次(0.01 * 2^16 = 655.36),所以你的循环执行16次就会因为i < 365不成立而停止,远远达不到365次的要求。

正确的写法:用计数器控制循环次数

你需要一个计数变量来追踪已经执行了多少次翻倍,而不是用当前金额的大小作为循环条件。这里有两种简单的实现方式:

方式一:For循环(更直观)

let currentPenny = 0.01;
// 用day变量计数,从0到364,刚好执行365次
for (let day = 0; day < 365; day++) {
  console.log(`第${day + 1}天的金额:${currentPenny}`);
  currentPenny *= 2; // 执行翻倍操作
}

注:如果想先翻倍再打印(比如第一天结束后是0.02),可以把currentPenny *= 2放在console.log前面。

方式二:While循环(逻辑同样清晰)

let currentPenny = 0.01;
let daysCompleted = 0;

while (daysCompleted < 365) {
  console.log(currentPenny);
  currentPenny *= 2;
  daysCompleted++; // 每执行一次翻倍,计数加1
}

额外提醒:数值精度问题

当执行到大概第100次翻倍时,数值会变得极大,超出JavaScript双精度浮点数的精确范围,最终会变成Infinity。但这属于正常现象,因为365次翻倍后的数值本来就是天文数字,已经超出了常规数值的表示范围。

内容的提问来源于stack exchange,提问作者Corina

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 04:00:23