繁体   English   中英

JavaScript | 数字位数的总和

[英]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是您可以使用的最大整数,而不会损失精度。

如果您的输入值为字符串,则可以

  1. 检查它是否仅包含带正则表达式的数字

  2. 得到你的字符串的长度

编辑:职位标题是数字位数,但您的代码实际上是数字位数的总和 你到底想要什么?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM