将float转换为字符串而不使用sprintf()

前端之家收集整理的这篇文章主要介绍了将float转换为字符串而不使用sprintf()前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在编写基于微控制器的应用程序,我需要将float转换为字符串,但我不需要与sprintf()相关的繁重开销.有没有雄辩的方法来做到这一点?我不需要太多.我只需要2位数的精度.

解决方法

尝试这个.它应该很好而且很小.我直接输出字符串 – 执行printf而不是sprintf.我将留给你为返回字符串分配空间,以及将结果复制到其中.
// prints a number with 2 digits following the decimal place
// creates the string backwards,before printing it character-by-character from
// the end to the start
//
// Usage: myPrintf(270.458)
//  Output: 270.45
void myPrintf(float fVal)
{
    char result[100];
    int dVal,dec,i;

    fVal += 0.005;   // added after a comment from Matt McNabb,see below.

    dVal = fVal;
    dec = (int)(fVal * 100) % 100;

    memset(result,100);
    result[0] = (dec % 10) + '0';
    result[1] = (dec / 10) + '0';
    result[2] = '.';

    i = 3;
    while (dVal > 0)
    {
        result[i] = (dVal % 10) + '0';
        dVal /= 10;
        i++;
    }

    for (i=strlen(result)-1; i>=0; i--)
        putc(result[i],stdout);
}
原文链接:https://www.f2er.com/css/217441.html

猜你在找的CSS相关文章