7

与えられた変数 x = 12.3442

変数の小数点以下の桁数を知りたいです。この場合、結果は 4 になります。試行錯誤せずにこれを行うにはどうすればよいでしょうか?

4

5 に答える 5

6

コンパクトな方法は次のとおりです。

y = x.*10.^(1:20)
find(y==round(y),1)

xが数字で、20 が小数点以下の最大桁数であると仮定します。

于 2013-05-14T12:58:12.713 に答える
4

コメントで述べたように、「10 進数の桁数」はほとんどの場合意味がありませんが、これはあなたが探しているものかもしれないと思います:

>> num = 1.23400;
>> temp = regexp(num2str(num),'\.','split')

temp = 

    '1'    '234'
>> length(temp{2})

ans =

    3
于 2013-05-13T18:27:26.337 に答える
0

数値aと、それが小数点以下 28 桁未満になるという仮定については、コンパクトで信頼できるものです。

numDP = length(num2str(a, 28)) - strfind(num2str(a, 28),'.');

文字列への変換は、少し不器用ですが、Matlab の文字列比較関数をうまく利用します。

于 2013-11-06T14:05:29.830 に答える
0

すべての条件で動作します (10 進数の場合):

temp = strsplit(num2str(num),'.');
result = length(temp{2});
于 2015-11-05T13:21:20.607 に答える