- u = (t) ? (unsigned int)d : va_arg (ap, unsigned int);
- for (i = nextpow (u, 10), s = str; i > 0; i--, s++) {
- str[i - 1] = '0' + (u % 10);
- u /= 10;
+ str = itoa (str, (t) ? (unsigned int)d : va_arg (ap, unsigned int), 0);
+ break;
+ case 'f': /* float */
+ f = va_arg (ap, double);
+ if (f == 0) {
+ *str++ = '0';
+ break;
+ }
+ if (f < 0) {
+ *str++ = '-';
+ f = -f;
+ }
+ if (sz == 0) sz = 6;
+ t = getexponant (&f, -sz);
+ u = (int)f;
+ str = itoa (str, u, 0);
+ d = (int)((f - u) * tenpower (sz));
+ if (d > 0) {
+ *str++ = '.';
+ str = itoa (str, d, sz);
+ }
+ while (*(str - 1) == '0') {
+ str--;
+ }
+ if (t != 0) {
+ *str++ = 'e';
+ if (t < 0) {
+ *str++ = '-';
+ t = -t;
+ }
+ str = itoa (str, t, 0);