英锐恩单片机论坛,Microchip单片机,模拟器件,接口电路,麦肯单片机,单片机应用交流
标题:
有关于Q格式的疑问
[打印本页]
作者:
min
时间:
2012-8-20 09:44
标题:
有关于Q格式的疑问
#include "p30f4011.h"
#include "dsp.h"
//--------------------------Device Configuration------------------------
_FOSC(CSW_FSCM_OFF & FRC_PLL16);//时钟切换,检测禁止;外部晶振,16倍频
_FWDT(WDT_OFF);//看门狗关闭
_FBORPOR(PBOR_OFF & MCLR_EN);//欠压复位禁止,MCL复位使能
_FGS(CODE_PROT_OFF); //代码保护禁止
fractional a,b,c[10];
unsigned char i;
void main(void)
{
float d=0.001;
for(i=0;i<10;i++)
{
a=Q15(0.1);
b=Q15(d);
d+=0.001;
c[i]=__builtin_divud(a,b);
}
while(1);
}
比如这个程序,C[0]中的结果应该是100,但是结果为99,C[1]应该为50,但是结果为49.通过仿真我发现这个我问题可能是因为Q格式会对数据进行舍入引起的。比如Q15(0.1)=0X0CCD但是真实的结果应该是3276.8左右,也就是介于0X0CCC与0X0CCD之间。请问对于这样的误差有没有什么避免的方法呢?
作者:
star
时间:
2012-8-20 09:52
Q是定点运算吗?直接用浮点看看。
欢迎光临 英锐恩单片机论坛,Microchip单片机,模拟器件,接口电路,麦肯单片机,单片机应用交流 (http://enroobbs.com/)
Powered by Discuz! X3.2