-2

タイトルが示すように、matlab で数値の桁を加算または乗算できるかどうかを知りたい

例えば:

数のために

123456789

数字を追加します。つまり、

1+2+3+4+5+6+7+8+9 =>45 =>4+5 => 9

あなたの助けに感謝します

4

1 に答える 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    

シャアアプローチ

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 桁を超える必要があります。

于 2013-07-06T13:17:49.597 に答える