我仍然对JavaScript有点新意,所以如果有人想解释如何解决这个小问题。
基本上,我使用不同的语言来解决训练课程。我在使用java脚本浮点时遇到了小问题。这是我的意思的例子。相关任务位于第3课,task one: CountDiv
在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解决方案?
由于
答案 0 :(得分:6)
在分割结果上使用parseInt
。
当你使用除法运算符时,结果被强制转换为浮点数,使其整数使用parseInt
。 (感谢@ahmacleod)
function solution(A, B, K) {
var offset = A % K === 0 ? 1 : 0;
return parseInt(B / K) - parseInt(A / K) + offset;
}
答案 1 :(得分:3)
我的第一次尝试就是这样:
function solution(A, B, K) {
return Math.floor(B / K) - Math.floor(A / K) + (A % K === 0 ? 1 : 0);
}
并且得分为100/100,因为有人提到parseInt也应该这样做。
答案 2 :(得分:0)
迅速100%
fortran_fixed-form.tmLanguage.json
答案 3 :(得分:0)
function solution(A, B, K) {
return Math.floor(B / K) - Math.ceil(A / K) + 1;
}
得分100/100