[英]JavaScript | Sum of number of digits issue
我正在解决一个数不计算数字的难题。 下面是代码:
function countDigits(n) {
console.log(n);
let count = 0;
while (n > 0) {
let d = n % 10;
count += d;
n = Math.floor(n / 10);
}
return count; }
除没有外,大多数文本案例都通过了。 输入的位数超过17。
测试用例:
n = 3546630947312051453014172159647935984478824945973141333062252613718025688716704470547449723886626736
预期的:446
得到:380
n = 35466309473120515
预期:64
得到:65
在网上浏览了一些帖子之后,我知道对于一个实例,如果数字超过17位,JavaScript将截断值:
var a = 35466309473120515
console.log(a) // a => 35466309473120516
要在其API中解决此问题,Twitter会以字符串而不是数字形式发送花呢ID。 更多细节在这里 。
但就我而言,我对输入值没有任何控制。 如果值超出输入范围(> 17),则将其转换为字符串。
请让我知道如何解决此问题。
JavaScript中的数字存储在64位上:53位表示整数值+ 11位表示尾数:
因此,Number.MAX_SAFE_INTEGER === 9007199254740991是您可以使用的最大整数,而不会损失精度。
如果您的输入值为字符串,则可以
检查它是否仅包含带正则表达式的数字
得到你的字符串的长度
编辑:职位标题是数字位数,但您的代码实际上是数字位数的总和 。 你到底想要什么?
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.