在matlab中,如何比较两个小数的小数点后前多少位相同?小数的范围是[0,1]例如a=0.123456,b=0.123466,则应返回4(因为小数点后前4位相同)如果a=1,b=0.1231,则应返回0如果a=0,b=0.002,则应返回2(因此时a=0

来源:学生作业帮助网 编辑:作业帮 时间:2024/05/09 19:16:45
在matlab中,如何比较两个小数的小数点后前多少位相同?小数的范围是[0,1]例如a=0.123456,b=0.123466,则应返回4(因为小数点后前4位相同)如果a=1,b=0.1231,则应返回0如果a=0,b=0.002,则应返回2(因此时a=0

在matlab中,如何比较两个小数的小数点后前多少位相同?小数的范围是[0,1]例如a=0.123456,b=0.123466,则应返回4(因为小数点后前4位相同)如果a=1,b=0.1231,则应返回0如果a=0,b=0.002,则应返回2(因此时a=0
在matlab中,如何比较两个小数的小数点后前多少位相同?
小数的范围是[0,1]
例如a=0.123456,b=0.123466,则应返回4(因为小数点后前4位相同)
如果a=1,b=0.1231,则应返回0
如果a=0,b=0.002,则应返回2(因此时a=0.000)

在matlab中,如何比较两个小数的小数点后前多少位相同?小数的范围是[0,1]例如a=0.123456,b=0.123466,则应返回4(因为小数点后前4位相同)如果a=1,b=0.1231,则应返回0如果a=0,b=0.002,则应返回2(因此时a=0
function f=myfun(a,b)
for f=1:100
a=10*mod(a,1);
b=10*mod(b,1);
a1=floor(a);
b1=floor(b);
if a1~=b1
f=f-1;
break
elseif f==100
msgbox('a==b','提示','warn');
end
end
编了个函数,你把上面文字保存成函数文件,在命令窗口输入
f=myfun(a,b) 试一下
结果:
f=myfun(0.1123455487,0.11234554646)
f =
8
>> f=myfun(1.001123455487,1)
f =
2
>> f=myfun(0.00001,0)
f =
4

你可以把其中的a和b用其他数字替换
clear all;
clc;
a=0.12345; b=0.123468;
i=0;
c=a*10;
d=b*10;
while fix(c)==fix(d)
i=i+1;
c=c*10;
d=d*10;
end
fprintf('小数点后有%d位数相同\n',i);