Codibility-CountDiv JavaScript解决方案

Codibility-CountDiv JavaScript解决方案,javascript,Javascript,我对JavaScript还是有点陌生,所以如果有人愿意解释如何解决这个小问题的话 基本上,我使用不同的语言来解决代码能力训练任务。我在使用java脚本(浮点)时遇到了一个小问题。这是我的意思的一个例子。有问题的任务在第3课中 在Java中,我的解决方案工作得非常好,它的得分为100/100。代码如下: class Solution { public int solution(int A, int B, int K) { int offset = A % K ==0?1:

我对JavaScript还是有点陌生,所以如果有人愿意解释如何解决这个小问题的话

基本上,我使用不同的语言来解决代码能力训练任务。我在使用java脚本(浮点)时遇到了一个小问题。这是我的意思的一个例子。有问题的任务在第3课中

在Java中,我的解决方案工作得非常好,它的得分为100/100。代码如下:

class Solution {
    public int solution(int A, int B, int K) {

        int offset = A % K ==0?1:0;

        return (B/K) - (A/K) + offset;

    }
}
用java脚本编写的代码得分为75/100

function solution(A, B, K) {
   var offset;

   if (A % K === 0) {
       offset=1;
   } else {
       offset=0;
   }

   var result =(B/K) - (A/K) + offset;

   return parseInt(result);
}
JavaScript解决方案在以下测试中失败: A=11,B=345,K=17 (返回19,期望20)

我假设这与JavaScript如何将浮点转换为整数有关

如果有人愿意解释如何正确编写JS解决方案


谢谢

对除法结果使用
parseInt

使用除法运算符时,结果将强制为浮点数,以使其成为整数,请在其上使用
parseInt
。(感谢)


我的第一次尝试就是这样:

function solution(A, B, K) {
    return Math.floor(B / K) - Math.floor(A / K) + (A % K === 0 ? 1 : 0);
}
而且它的得分是100/100,正如前面提到的,parseInt也应该做到这一点。

Swift 100%

public func solution(_ A : Int, _ B : Int, _ K : Int) -> Int {


    // write your code in Swift 4.2.1 (Linux)

     let offset = A % K == 0 ? 1 : 0

    return (B/K) - (A/K) + offset
}

得分100/100

这不太正确。问题是,
B/K
在java中是整数除法,但在javascript中强制为浮点除法。很抱歉,舍入不起作用。即使是最初的输入,你也会得到错误的答案:使用你的代码:示例测试:[6,11,2]错误的答案(得到4个预期的3)@Bola它工作正常。请检查更新的应答编辑评论是否正确,parseInt是问题所在,谢谢。我理解为什么我们把B和A除以K,然后取差(加1)。但是我不明白为什么我们需要%K,有时不添加1?这背后的基本原理或直觉是什么?有没有一个例子?
public func solution(_ A : Int, _ B : Int, _ K : Int) -> Int {


    // write your code in Swift 4.2.1 (Linux)

     let offset = A % K == 0 ? 1 : 0

    return (B/K) - (A/K) + offset
}
function solution(A, B, K) {
   return Math.floor(B / K) - Math.ceil(A / K) + 1;
}