static int printFloat(struct _buf *sbuf, float value, int ary, int width, int precision, int pad, int letbase)
{
int num;
int32_t llvalue;
int iprc;
uint16_t uipoint_value;
int i;
num = 0;
llvalue = (int32_t) value;
num += printInt32(sbuf, llvalue, ary, 1, width, pad, letbase);
printchar(sbuf, '.');
num += 1;
if(precision > 4)
{
precision = 4;
}
iprc = 1;
for(i = 0; i < precision; i++)
{
iprc *= 10;
}
value -= llvalue;
uipoint_value = abs((int16_t)(value * iprc));
num += printInt16(sbuf, uipoint_value, ary, 0, precision, pad | PAD_ZERO, letbase);
return num;
}复制代码