matlab 小数取余 rem 和 mod有 bug

目录

  • 前言
  • 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 函数

matlab 文档------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 函数

matlab 文档------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 比较出错,返回的是真。


注意

  1. Matlab 代码中不加分号会默认再命令行窗口打印该变量结果

  2. mod 函数生成一个为零或与除数 具有相同符号的结果。

    rem 函数生成一个为零或与被除数具有相同符号的结果。

相关推荐
jk_1016 小时前
MATLAB中insertAfter函数用法
开发语言·matlab
matlabgoodboy14 小时前
代码编写java代做matlab程序代编Python接单c++代写web系统设计
java·python·matlab
chen49307218 小时前
matlab实现数据极坐标显示
matlab
Evand J21 小时前
matlab绘图——彩色螺旋图
开发语言·matlab·信息可视化
wenxin-1 天前
NS3网络模拟器中如何利用Gnuplot工具像MATLAB一样绘制各类图形?
开发语言·matlab·画图·ns3·lr-wpan
硬汉嵌入式1 天前
《安富莱嵌入式周报》第349期:VSCode正式支持Matlab调试,DIY录音室级麦克风,开源流体吊坠,物联网在军工领域的应用,Unicode字符压缩解压
vscode·matlab·开源
小熊科研路(同名GZH)2 天前
【Matlab高端绘图SCI绘图模板】第002期 绘制面积图
开发语言·matlab
肖田变强不变秃2 天前
C++实现矩阵Matrix类 实现基本运算
开发语言·c++·matlab·矩阵·有限元·ansys
jk_1013 天前
MATLAB中characterListPattern函数用法
开发语言·matlab
恩泽君3 天前
Matlab总提示内存不够用,明明小于电脑内存
开发语言·matlab