我在程序中有下面一条语句,运行时有错误:long V; V =0.0002442*3.3*1540; 这样算出来的V值送显示程序,感觉反映比较慢?
Peter_Zheng:
浮点运算会占用较多资源,那么运算速度也会受到影响,可以考虑写一个浮点库的程序。
#define uchar unsigned char
#define uint unsigned int
#include
void FtoC(void)
{
float a ;
uchar i,*px;
uchar x[4]; /*定义字元阵列,准备存储浮点数的四个位元组 */
void *pf;
px=x; /* px指标指向阵列x */
pf=&a ; /*void 型指标指向浮点数首地址*/
a=34.526 ;
for(i=0;i<4;i++)
{
*(px+i)=*((char*)pf+i);
/*强制void 型指针转成char型,因为*/
} /*void型指针不能运算*/
for(i=0;i<4;i++) printf("%d",x); /* */
}
main()
{
FtoC() ;
getch();
}
可以用这个程式得到 浮点数转变为 IEEE的标准存放格式
Hardy Hu:
1.将浮点数扩大10的n次方,转化为unsigned int 整数
2.使用MPY进行乘法运算,这个在有MPY的MCU中是自动开启的;