目录
- 前言
- Matlab取余函数
-
- [1 mod 函数](#1 mod 函数)
-
- [1.1 命令行输入](#1.1 命令行输入)
- [1.2 命令行输出](#1.2 命令行输出)
- [2 rem 函数](#2 rem 函数)
-
- [2.1 命令行输入](#2.1 命令行输入)
- [2.2 命令行输出](#2.2 命令行输出)
- 分析原因
- 注意
前言
在 Matlab 代码中mod(0.11, 0.1) < 0.01
判断为真,mod(1.11, 0.1) < 0.01
判断为假,导致出现意料外的结果。
结果发现被除数小于1的话会出现这些结果,被除数是大于1的小数不会。猜测应该是数据保存的精度问题。
Matlab取余函数
1 mod 函数
1.1 命令行输入
matlab
t=0; for i =0:50, t=t+0.01; if mod(t,0.1) <0.01; fprintf('t的值:%.3f\n',t),end,end;
1.2 命令行输出
会出现不想要的值 0.110
2 rem 函数
2.1 命令行输入
matlab
t=0; for i =0:50, t=t+0.01; if rem(t,0.1) <0.01; fprintf('t的值:%.3f\n',t),end,end;
2.2 命令行输出
会出现不想要的值 0.110
分析原因
mod 和 rem 函数得到的 0.0100 和 0.01 比较出错,返回的是真。
注意
-
Matlab 代码中不加分号
;
会默认再命令行窗口打印该变量结果 -
mod 函数生成一个为零或与除数 具有相同符号的结果。
rem 函数生成一个为零或与被除数具有相同符号的结果。