JS拆分阿姆斯特朗数153数位时n3计算错误问题求解
三位数数位拆分问题解答
问题根源
你的n3计算逻辑存在两个问题:
- JavaScript的
/是浮点数除法,不会自动截断小数部分。代入n=153计算时,((153 - 3)/10)/10 = 15/10 = 1.5,无法得到整数型的百位值1。 - 现有逻辑没有对最高位做
%10取余处理,一旦需要拆分四位数及以上的数值,计算结果会混入更高位的数值,完全不符合预期。
另外你写的n2计算逻辑可以简化,不需要先减去n1再做除法,直接先整除再取余的写法更简洁,也不容易出错。
修正代码
推荐统一用「整除后取余」的规则计算每一位,不管是三位数还是更多位的数字都能兼容:
let n = 153 let n1 = n % 10; // 个位:153%10=3 let n2 = Math.floor(n / 10) % 10; // 十位:153/10取整为15,15%10=5 let n3 = Math.floor(n / 100) % 10; // 百位:153/100取整为1,1%10=1
如果确定代码只处理三位数,n3也可以简化为Math.floor(n / 100),省略取余步骤。
运行后三个值分别为3、5、1,完全符合数位拆分的预期,后续直接计算三个数的立方和即可完成阿姆斯特朗数的校验。
内容的提问来源于stack exchange,提问作者Aman Rajput
相关产品推荐
相关产品推荐

