当前位置: 首页 > news >正文

matlab 小数取余 rem 和 mod有 bug

目录

  • 前言
  • 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 比较出错,返回的是真。

在这里插入图片描述
在这里插入图片描述

注意

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

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

在这里插入图片描述

http://www.lryc.cn/news/408137.html

相关文章:

  • Avalonia中的数据模板
  • Sqlmap中文使用手册 - Techniques模块参数使用
  • 科普文:kubernets原理
  • GO-学习-02-常量
  • Vue系列面试题
  • 等级保护 总结2
  • 关于Redis(热点数据缓存,分布式锁,缓存安全(穿透,击穿,雪崩));
  • 【北京迅为】《i.MX8MM嵌入式Linux开发指南》-第三篇 嵌入式Linux驱动开发篇-第四十七章 字符设备和杂项设备总结回顾
  • C#初级——枚举
  • Linux 动静态库
  • 微信小游戏之 三消(一)
  • 软件测试---Linux
  • 数据库之数据表基本操作
  • 利用OSMnx求路网最短路径并可视化(二)
  • 双向门控循环神经网络(BiGRU)及其Python和MATLAB实现
  • 【BUG】已解决:ERROR: Failed building wheel for jupyter-nbextensions-configurator
  • Unity UGUI 之 自动布局组件
  • 网络基础之(11)优秀学习资料
  • QT自定义无边框窗口(可移动控制和窗口大小调整)
  • Typora 【最新1.8.6】版本安装下载教程 (轻量级 Markdown 编辑器),图文步骤详解,免费领取(软件可激活使用)
  • RxJava 面试题及其答案
  • 【Rust】所有权OwnerShip
  • qt总结--翻金币案例
  • 最清楚的 BIO、NIO、AIO 详解!
  • 八股文学习第二天| HTTP请求报文和响应报文是怎样的,有哪些常见的字段?,HTTP有哪些请求方式?,GET请求和POST请求的区别?
  • C++初阶学习第四弹——类与对象(中)
  • 【计算机网络】期末实验答辩
  • 一步步教你学会如何安装VMare虚拟机(流程参考图)
  • WebGoC题解(14) 151.(2017dloi小乙)第5题 巧克力甜度(sweet)
  • 深入探索PHP框架:Symfony框架全面解析