【问题标题】:Reading double Value PIC18F67K22 [duplicate]读取双值 PIC18F67K22 [重复]
【发布时间】:2018-08-27 16:48:04
【问题描述】:
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 编译器

【问题讨论】:

  • 你为什么在没有 FPU 的糟糕 PIC 上使用浮点数?
  • @Lundin,我认为您结束这个问题太仓促了。这里令人惊讶的行为是双精度数很少。
  • @ThomasPadron-McCarthy 随意寻找更好的副本。此类问题之前已被问过数千次。
  • 确实找到了正确的骗子顺便说一句:stackoverflow.com/questions/22412584/…

标签: c embedded pic


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-10
    • 2021-07-01
    • 2019-07-31
    • 2013-07-22
    相关资源
    最近更新 更多