两个double类型的矩阵的取模运算

MATLAB中有一个double类型A,A(12,1)=30;mod(fix(A(12,1)/6),2)=0,而实际应该等于1,另外还有一个double类型的矩阵B,进行同样的运算,却可以得到正确答案,请问有哪位大侠知道是怎么回事啊?谢谢了!!!
恩,对,A矩阵是运算得出来的。至今还不知道什么问题呢。有一种可能就是A(12,1)=29.999999然后机器显示30,所以才会有那样的结果出现,请各位提提建议。
round为四舍五入,如果我希望忽略小数部分,该怎么做呢?

我重复不出你的结果,估计是你并没有显式地写赋值语句"A(12,1)=30;",如果30是经过运算得到的结果,则因为舍入误差的缘故可能比真实值略小,导致最终结果是0。
不妨考虑用round代替fix,可以解决这个问题。

补充:
不用考虑了,肯定是舍入误差造成的,你不用试图去避免舍入误差,倒不是说没有希望办到,只是从你的叙述来看你并没有掌握这些知识,对你来说用round来进行取整就可以了。

再补充:
如果理论上(没有舍入误差)你的中间结果是实数,那么可以用
tol=1e-8;
fix(a*(1+tol))
来实现向0取整。安全的tol的大小取决于你的问题。
温馨提示:答案为网友推荐,仅供参考
相似回答