タイトルが示すように、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 桁を超える必要があります。