发现一个使用mod函数的bug,大家一起来分析一下,版本:2019b。
Show older comments
我把代码单独摘出来了,直接运行就可以复现这个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出现的原因应该和运算精度有关,但是更深一层次的原因我就想不清楚了。大家一起来讨论一下呀。
Accepted Answer
More Answers (0)
Categories
Find more on MATLAB in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!