2016-09-25 43 views
-4

我想在最后一次迭代中将n减少到0,但我的计算错误。我俯视着什么。现在我正在做Math.round(n /循环)。我需要找到一种方法来分散减法,以便在最后一次迭代中n变为0,而每个n之间的范围是恒定的。在每次迭代中减少一个数字,直到精确到0

function check(a, b) { 
     let loops = a/b; 
     let n = 200; 

     for (let i = 0; i <= loops; i++) { 
     console.log(n); 
     n -= Math.round(200/loops); 
     } 
} 

check(60, 10) 

编辑:很抱歉,但这些downvotes是荒谬的。

+1

为什么你认为总是会达到零? – vlaz

+0

@vlaz正是这一点。我希望它通过填充丢失的减法来达到0,但是在每次迭代中平均分散它。 – Asperger

+1

您是否尝试过用手工作? – vlaz

回答

1

您的代码的主要问题是表达式n/loop在每次迭代中都有所不同。你可能打算这个表达是恒定的,在这种情况下,逻辑会更合理。

使用一个单独的变量,随着n的值开始,然后是减法的主题,但而不改变被在表达式n/loop使用Ñ原始值:

function check(a, b) { 
 
    let loops = a/b; 
 
    let n = 200; // don't change n after this. 
 
    let n2 = n; // use a separate variable for that. 
 
    for (let i = 0; i <= loops; i++) { 
 
     console.log(Math.round(n2)); // only round in output 
 
     n2 -= n/loops; // use n, but only change n2 
 
    } 
 
} 
 

 
check(60,10);

+0

本来我有n - = 200 /循环。我应该复制整个代码而不是写新的(我喜欢写xd)。尽管如此,我仍然得到了错误的结果,但我注意到你取得了结果。该死,我完全忘了这么做。你是对的,它将负数结果加到0。 – Asperger

+0

我真的需要在极长的编码会话后休息。 – Asperger