最近的工作涉及到Matlab 和C,对比发现,在数字处理方面存在一些不同,Golden 比较时问题多多啊
floor(0.5+0.5)=1 floor(-0.5+0.5)=0 Matlab: round(0.5)=1 round(-0.5)=-1 int8(0.5) = 1 int8(-0.5)=-1 C: int(2.9) = 2 int(-2.9) = -2 float d=5.0/2.0 = 2.5
关于除法: 整数相除和浮点数相除有所不同。 c整数除整数,即使赋给float,也要先取整,取整方式是直接将小数部分丢掉,这个做法的结果就是向0方向取整,也相当于先用绝对值做除法,丢掉余数,加上符号。
关于移位操作: C语言移位直接移动bit位 关于 模操作 Matlab 模的结果都是正值,[0,N-1], C的结果[-N+1,N-1] C语言 -1%4 = -1 -5%4 = -1 Matlab -1%4 = 3 -5%4 = 3
存储本身就会损失精度: float a=2.1 其实存储的只是2.0999999, a*100/10 = 20, |
|