正如标题所说,我想知道是否可以在matlab中添加或相乘数字的数字
例如:
对于一个数字
123456789
添加数字,即
1+2+3+4+5+6+7+8+9 =>45 =>4+5 => 9
提前感谢您的帮助
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
A = '35356536576821';
A = char(regexp(A,'\d+','match'));
while ~isscalar(A)
A = num2str(sum(A - '0'));
end
两者,首先取绝对数(去掉减号)然后:数字计算log10()
一个数字有多少位数,并通过模数和除法提取求和的数字,而 char 方法通过隐式转换转换为数字 - '0'
,求和并再次转换回字符串。
这两种方法都可能受到浮点近似的影响,但数字方法肯定更容易受到它的影响:
A = 11111111111111111;
xp = ceil(log10(A)):-1:1;
fix(mod(A,10.^xp)./10.^[xp(2:end) 0])
ans =
Columns 1 through 13
1 1 1 1 1 1 1 1 1 1 1 1 1
Columns 14 through 17
1 1 1 2
要获得 char 方法的近似值,第一个总和应超过 16 位数字。