目录
- 前言
- Matlab取余函数
- 1 mod 函数
- 1.1 命令行输入
- 1.2 命令行输出
- 2 rem 函数
- 2.1 命令行输入
- 2.2 命令行输出
- 分析原因
- 注意
前言
在 Matlab 代码中mod(0.11, 0.1) < 0.01
判断为真,mod(1.11, 0.1) < 0.01
判断为假,导致出现意料外的结果。
结果发现被除数小于1的话会出现这些结果,被除数是大于1的小数不会。猜测应该是数据保存的精度问题。
知乎的回答解释
Matlab取余函数
1 mod 函数
matlab 文档——mod除后的余数(取模运算)
1.1 命令行输入
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 函数
matlab 文档——rem 除后的余数
2.1 命令行输入
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 函数生成一个为零或与被除数具有相同符号的结果。