我正在编写基于微控制器的应用程序,我需要将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); }