【问题标题】:How do I square a number's digits?如何将数字的数字平方?
【发布时间】:2015-09-01 14:21:39
【问题描述】:

如何计算数字的位数?例如:

square(21){};

应该是41 而不是441

【问题讨论】:

  • 我很困惑。您想对一个数字求平方,但在本例中想要得到11 而不是121?我不明白。
  • 11 的平方不是 11,而是 121! square() 应该返回什么:11 还是 121?!
  • 你想要单个数字的平方吗?
  • 他想要单个数字。
  • 所以,99 会变成 字符串 '8181'?

标签: javascript numbers int digits perfect-square


【解决方案1】:

这很容易通过简单的数学运算完成。不需要字符串处理的开销。

var result = [];
var n = 21;
while (n > 0) {
    result.push(n%10 * n%10);
    n = Math.floor(n/10);
}

document.body.textContent = result.reverse().join("");

在一个循环中,当你的数字大于 0 时,它...

  • 使用% 运算符获取数字除以10 的余数

  • 对其求平方并将其添加到数组中。

  • 通过将原始数字除以 10、删除小数点右侧的截断并重新分配来减少原始数字。

然后在最后它反转并将数组连接到结果字符串中(如果您愿意,可以将其转换为数字)

【讨论】:

    【解决方案2】:

    我认为他的意思如下:

        var output = "";
        for(int i = 0; i<num.length; i++)
        {
            output.concat(Math.pow(num[i],2).toString());
        }
    

    【讨论】:

      【解决方案3】:

      我相信这就是 OP 正在寻找的东西?每个数字的平方?

      var number = 12354987,
      var temp = 0;
      
      for (var i = 0, len = sNumber.length; i < len; i += 1) {
          temp = String(number).charAt(i);
          output.push(Number(temp) * Number(temp));
      }
      
      console.log(output);
      

      【讨论】:

        【解决方案4】:

        将字符串拆分为一个数组,返回元素平方的map,然后将生成的数组重新组合成一个字符串。

        function squareEachDigit(str) {
            return str.split('').map(function (el) {
                return (+el * +el);
            }).join('');
        }
        
        squareEachDigit('99') // 8181
        squareEachDigit('52') // 254
        

        DEMO

        【讨论】:

        • * 会强制,所以不需要+el * +el;只需 el * el 即可。
        【解决方案5】:

        function sq(n){
        var nos = (n + '').split('');
        var res="";
        for(i in nos){
          res+= parseInt(nos[i]) * parseInt(nos[i]);
        }
        
        return parseInt(res);
        }
        
        var result = sq(21);
        alert(result)

        【讨论】:

          【解决方案6】:

          您需要将数字拆分为它们的位值,然后将它们平方,然后将它们重新连接在一起。以下是我的做法:

          function fn(num){
              var strArr = num.toString().split('');
              var result = '';
              for(var i = 0; i < strArr.length; i++){
               result += Math.pow(strArr[i], 2) + '';
              }
          
              return +result;
          }
          

          使用Math.pow 对这样的数字求平方:

          Math.pow(11,2); // returns 121

          【讨论】:

          • 我相信 op 想要单个数字的平方。
          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2010-10-27
          • 2020-12-07
          • 2014-09-24
          • 2016-04-07
          • 2022-08-03
          • 1970-01-01
          相关资源
          最近更新 更多