在MATLAB中查找变量的小数位数

时间:2013-05-13 17:16:57

标签: matlab

给定变量x = 12.3442

我想知道变量的小数位数。在这种情况下,结果将是4.如何在没有反复试验的情况下执行此操作?

5 个答案:

答案 0 :(得分:5)

这是一种紧凑的方式:

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

假设x是您的号码,20是最大小数位数。

答案 1 :(得分:4)

正如评论中所提到的,在大多数情况下,“小数位数”没有意义,但我认为这可能是您正在寻找的:

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

temp = 

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

ans =

    3

答案 2 :(得分:0)

%If number is less than zero, we need to work with absolute value
if(value < 0)
   num = abs(value);
else
   num = value;
end
d = 0; % no of places after decimal initialised to 0.
x = floor(num);
diff = num - x;
while(diff > 0)
     d = d + 1;
     num = num * 10;
     x = floor(num);
     diff = num - x;
 end

 %d is the required digits after decimal point    

答案 3 :(得分:0)

对于一个数字a,假设它的小数位数小于28,这是紧凑而可靠的:

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

转换为字符串可以很好地利用Matlab中的字符串比较函数,尽管它有点笨拙。

答案 4 :(得分:0)

在所有条件下工作(如果是十进制):

temp = strsplit(num2str(num),'.');
result = length(temp{2});