0

如何对数字的数字求平方?例如:

square(21){};

应该导致41而不是441

4

6 回答 6

2

这可以通过简单的数学轻松完成。不需要字符串处理的开销。

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、删除小数点右侧的截断并重新分配来减少原始数字。

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

于 2015-06-16T16:34:21.920 回答
0

我认为他的意思如下:

    var output = "";
    for(int i = 0; i<num.length; i++)
    {
        output.concat(Math.pow(num[i],2).toString());
    }
于 2015-06-16T16:32:33.520 回答
0

我相信这就是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);
于 2015-06-16T16:33:07.757 回答
0

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

function squareEachDigit(str) {
    return str.split('').map(function (el) {
        return (+el * +el);
    }).join('');
}

squareEachDigit('99') // 8181
squareEachDigit('52') // 254

演示

于 2015-06-16T16:39:56.520 回答
-1

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

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

于 2015-06-16T16:25:14.183 回答
-1

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)

于 2015-06-16T16:38:49.823 回答