用【||】字体浏览
C51BBS论坛>>C51编程:sprint函数求教

C51编程:sprint函数求教 [wsnd] 2008-5-12 12:17:21

我用sprint函数将一个浮点数,转换成单个的数字,用于显示,但被转换数据超过7位后,转换
就有问题,当第8位是8时,第7为就会加1(就是7变8),如果第8位是0,则第7位不变.而第8位,
则始终为0,如果只有7位数,则一切正常.看起来有些像:SPRINT转换数据不能超过7位,请各
位高手帮忙看看.请看程序:
void main(void)
{
 unsigned char buf[8]={0,0,0,0,0,0,0,0};
 unsigned char i,n,tt;
 float predata;
 n=sprint(buf,"%f",predata);
 for(i=0;i<=7;i++)
 {tt=buf[i];}
}
 

  • 浮点数的精度本身就只有7位左右 [qllaoda] 2008-5-12 12:35:40


  • 但是浮点数的长度可不止7位呀?,而且我将数据定义为:double类型也不行. [wsnd] 2008-5-12 13:39:53


  • 不用sprint自已编一个sprint,也许库中的就那么在能力 [ddllxxrr] 2008-5-12 13:53:25


  • 单精度型浮点数转化为10进制后,只有7位有效数,KEIL C51不支持双精度浮点数 [qllaoda] 2008-5-12 14:08:58


  • 按浮点数的表达方式,有效位本来也只有那么多,自己写也没用 [qllaoda] 2008-5-12 14:09:45


  • 有谁用过float.h里的相关设定吗?主要是双精度和长双精度的,不知知可否利用。 [hitek] 2008-5-12 17:19:57


  • c51里不是有DOUBLE类型的数据吗?,难道不可以用吗? [wsnd] 2008-5-12 19:05:09


  • 结帖成功,感谢[qllaoda]的回答 [wsnd] 2008-5-12 21:24:28

    感谢qllaoda,答案已接受,您获得50分专家分

点击回主题参与讨论 >>>
_____________________________________________________________________________
Copyright©,C51BBS论坛 1999-2006