Matlab判断小数有多少位

。。。为什么百度出来都是设置显示多少位小数的。。。。


嗯。。。只能想办法


打算用求模取余的办法。


判断12345.12312有多少位小数


代码:

clc
clear all
close all

a0=12345.12312;
a=mod(a0,1);%the fraction part
div=0.1;
digitNum=0;
while abs(a-0)>1e-12
    a=mod(a,div);
    digitNum=digitNum+1;
    div=10^(-digitNum-1);
end
disp(['The number of digits is: ',num2str(digitNum)]);

结果:

The number of digits is: 5


特别注意:如果判断条件写a~=0,那么果断不管什么数都给算出三百多位小数来,这与数值精度有关。我使用a0这个值也是因为如果条件写成eps(a),那么每次计算后这个值都会变化,还是要算到300+。。。。嗯,除了这个就没有大陷阱了~~~我设定了1e-12,这个数值很敏感,所以现在顶多能判断12位小数,再多就不行了,改变这个值也会产生副作用,刚才的实验,如果用4位小数,计算值在算到最后一位后猛地变成1e-19这个数量级的,当时我设定的是1e-20,所以这种情况下4到20位的全部是20位小数。。。这个是很大的问题。。。。。不过,考虑实际情况,这个算法已经可以解决很多问题了。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值