Matlab判断小数有多少位
2014-03-03 20:01
337 查看
。。。为什么百度出来都是设置显示多少位小数的。。。。
嗯。。。只能想办法
打算用求模取余的办法。
判断12345.12312有多少位小数
代码:
结果:
The number of digits is: 5
特别注意:如果判断条件写a~=0,那么果断不管什么数都给算出三百多位小数来,这与数值精度有关。我使用a0这个值也是因为如果条件写成eps(a),那么每次计算后这个值都会变化,还是要算到300+。。。。嗯,除了这个就没有大陷阱了~~~我设定了1e-12,这个数值很敏感,所以现在顶多能判断12位小数,再多就不行了,改变这个值也会产生副作用,刚才的实验,如果用4位小数,计算值在算到最后一位后猛地变成1e-19这个数量级的,当时我设定的是1e-20,所以这种情况下4到20位的全部是20位小数。。。这个是很大的问题。。。。。不过,考虑实际情况,这个算法已经可以解决很多问题了。
嗯。。。只能想办法
打算用求模取余的办法。
判断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位小数。。。这个是很大的问题。。。。。不过,考虑实际情况,这个算法已经可以解决很多问题了。
相关文章推荐
- 动易2006序列号破解算法公布
- C#数据结构与算法揭秘二
- 浅析STL中的常用算法
- 解析在main函数之前调用函数以及对设计的作用详解
- JavaScript 组件之旅(二)编码实现和算法
- java数据结构和算法学习之汉诺塔示例
- python基础教程之python消息摘要算法使用示例
- java和matlab画多边形闭合折线图示例讲解
- C#调用Matlab生成的dll方法的详细说明
- php的hash算法介绍
- 从java中调用matlab详细介绍
- 将15位身份证补全为18位身份证的算法示例详解
- C++算法系列之日历生成的算法代码
- 1 2 3 4 5 6 7 8 9 = 110的java实现
- Sedgewick之巨著《算法》,与高德纳TAOCP一脉相承
- 【代码】Pythonの代码片段
- STL中算法
- 数据结构&算法学习
- 算法的时间复杂度
- 算法导论:选择排序的原理与实现