与えられた変数 x = 12.3442
変数の小数点以下の桁数を知りたいです。この場合、結果は 4 になります。試行錯誤せずにこれを行うにはどうすればよいでしょうか?
コンパクトな方法は次のとおりです。
y = x.*10.^(1:20)
find(y==round(y),1)
x
が数字で、20 が小数点以下の最大桁数であると仮定します。
コメントで述べたように、「10 進数の桁数」はほとんどの場合意味がありませんが、これはあなたが探しているものかもしれないと思います:
>> num = 1.23400;
>> temp = regexp(num2str(num),'\.','split')
temp =
'1' '234'
>> length(temp{2})
ans =
3
数値a
と、それが小数点以下 28 桁未満になるという仮定については、コンパクトで信頼できるものです。
numDP = length(num2str(a, 28)) - strfind(num2str(a, 28),'.');
文字列への変換は、少し不器用ですが、Matlab の文字列比較関数をうまく利用します。
すべての条件で動作します (10 進数の場合):
temp = strsplit(num2str(num),'.');
result = length(temp{2});