发现一个使用mod函数的bug,大家一起来分析一下,版本:2019b。
이전 댓글 표시
我把代码单独摘出来了,直接运行就可以复现这个bug。
当时是需要摘取一段数据中的某一位的数字,采用了逐步取余相减的方法做。在目标位前面数据均为0时会触发这个Bug。代码如下。详细的说明也标注在代码注释里面了。
clear;
rowData = [ 0000011000110000000 ...
0000011000100000000 ...
0000011000010000000];
PHS = rowData/1e6/1e7 - ...
mod(rowData,1e6*1e7)/1e6/1e7; % 截断后13位,输出为[1 1 1]
mod(PHS,1) % 对截断后的数据再对1取余数,结果应该都是0。
% 但是仿真下来第2个元素输出的是1。
bug出现的原因应该和运算精度有关,但是更深一层次的原因我就想不清楚了。大家一起来讨论一下呀。
채택된 답변
추가 답변 (0개)
카테고리
도움말 센터 및 File Exchange에서 MATLAB에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!