读取双倍值PIC18F67K22

时间:2018-03-19 07:22:45

标签: c embedded pic

char q[150];
void main(void){

System_Initialization();
UART_Init_2();

 while(1){ 

 double A=23.045610;
 sprintf(q,"%f\r\n",A);    
 UART_Tx_2(q);}}

当我读取A的值时,它给出23.045410而不是23.045610 有人知道为什么会这样吗? 我正在使用PIC18F67k22控制器和Xc8编译器

1 个答案:

答案 0 :(得分:2)

在PIC18上,float和double的数据类型相同,只有32位长。这不足以存储超过五位左右的十进制数字。因此,在小数结尾处可能会出现一些舍入误差。