如何在多位数Matlab中对数字求和

时间:2015-01-28 20:37:33

标签: matlab sum digits

我想知道如何在Matlab中对多位数的数字求和。

例如1241 = 1 + 2 + 4 + 1 = 8

5 个答案:

答案 0 :(得分:5)

基于字符串的答案:

>> n = 1241;
>> sum(int2str(n)-48)

ans =

     8

首先使用int2str将数字转换为字符串表示,然后从字符串的每个元素的ASCII代码中减去'0'的ASCII代码(即48),生成数字向量。然后将其相加以得到结果。

答案 1 :(得分:1)

A  = 35356536576821;
A  = abs(A);
xp = ceil(log10(A)):-1:1;

while ~isscalar(xp)
    A  = sum(fix(mod(A,10.^xp)./10.^[xp(2:end) 0]));
    xp = ceil(log10(A)):-1:1;
end    

这是数字方法

答案 2 :(得分:1)

这是解决方案的特征方法:

A = '35356536576821';
A = char(regexp(A,'\d+','match'));
while ~isscalar(A)
    A = num2str(sum(A - '0'));
end

两者,首先取绝对数(剥去负数)然后:数字用log10()计数一个数字有多少位数,通过模数和除数提取求和的数字,而char方法转换对于隐式转换为- '0'的数字,求和并再次转换回字符串。

答案 3 :(得分:1)

另一种全算术方法:

n = 1241;                   %// input
s = 0;                      %// initiallize output
while n>0                   %// while there is some digit left
    s = s + mod(n-1,10)+1;  %// sum rightmost digit
    n = floor(n/10);        %// remove that digit
end

答案 4 :(得分:1)

您可以使用此代码

sum(int2str(n)-48)

其中n是您的输入数字。