正如标题所说,我想知道是否可以在matlab中添加或乘以数字的数字
例如:
表示数字
123456789
添加数字,即
1+2+3+4+5+6+7+8+9 =>45 =>4+5 => 9
预先感谢您的帮助
答案 0 :(得分: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
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位数。