float打印不正确

芯片:CH583

代码

        static char xxx[10]={"3.14"};
        float pi;
        char fbuf[20];
        DBG("x = %s\n",xxx);
        sscanf(xxx,"%f",&pi);
        sprintf(fbuf,"%.2f",pi);
        DBG("pi = %.2f\n",pi);
        DBG("fbuf = %s\n",fbuf);
        float rlt = strtof(xxx, NULL);
        sprintf(fbuf,"%.2f",rlt);
        DBG("rlt = %.2f\n",rlt);
        DBG("fbuf = %s\n",fbuf);
        float fpi = 3.14;
        sprintf(fbuf,"%.2f",fpi);
        DBG("fpi = %.2f\n",fpi);
        DBG("fpi*100 = %d\n",(int)(fpi*100));
        DBG("fbuf = %s\n",fbuf);

DBG宏的实现

#define DBG(...) printf(" DBG(%s, %s(), %d): ", __FILE__, __FUNCTION__, __LINE__); printf(__VA_ARGS__)

打印结果

 DBG(../src/Main.c, main(), 749): x = 3.14
 DBG(../src/Main.c, main(), 752): pi = 26815622256785016688296265592222112551708132452936578279936498398813364362571671098643215977672002762693733515732368436221370366071748541264718157228015616.00
 DBG(../src/Main.c, main(), 753): fbuf = 2.00
 DBG(../src/Main.c, main(), 756): rlt = 26815615859885384735558591743984408416899026634245440356407978903749122491113867963109291794919019276406862025209102462237971718664841348387476629572550656.00
 DBG(../src/Main.c, main(), 757): fbuf = 2.00
 DBG(../src/Main.c, main(), 760): fpi = 26815615859885384735558591743984408416899026634245440356407978903749122491113867963109291794919019276406862025209102462237971718664841348387476629572550656.00
 DBG(../src/Main.c, main(), 761): fpi*100 = 314
 DBG(../src/Main.c, main(), 762): fbuf = 2.02

c 库选择

image.png

这样使用C库,打印%f也是不对

image.png


你好,添加数学库和stdlib.h,这里查看打印如下:

image.png

针对你上面打印信息异常情况,可以先注意配置是否相同。将代码发送至lpc@wch.cn,我们这边复现查看。


只有登录才能回复,可以选择微信账号登录