[an error occurred while processing this directive]
|
void SprintEng(char *dest, float val)
{
char exp = 0;
char d;
float k;
signed char dexp;
char bStartPrint = 0;
char bPoint = 0;
char printed = 0;
if (val == 0) {
*dest++ = '0';
*dest++ = 0;
return;
}if (val < 0) {
*dest++ = '-';
val = -val;
}
else {
*dest++ = ' ';
}if (val < 1) {
dexp = -3;
k = 1000;
}
else {
dexp = 3;
k = 0.001;
}while ((val < 1) || (val > 1000)) {
val *= k;
exp += dexp;
}
k = 100;while (printed < 4) {
d = (char) (val / k);
val -= d * k;
if (bStartPrint) {
// уже печатаем
*dest++ = d + '0';
printed++;
}
else if (d != 0) {
bStartPrint = 1;
*dest++ = d + '0';
printed++;
}
if ((val < 1) && !bPoint && (printed != 4)) {
bPoint = 1;
*dest++ = '.';
}k /= 10;
}
if (exp > 0) *dest++ = '+'; else {*dest++ = '-'; exp =- exp;}
*dest++ = exp + '0';
*dest++ = 0;
}
E-mail: info@telesys.ru