--- ray/src/cal/rcalc.c 2014/05/10 01:27:14 1.24 +++ ray/src/cal/rcalc.c 2014/05/10 01:48:14 1.25 @@ -1,5 +1,5 @@ #ifndef lint -static const char RCSid[] = "$Id: rcalc.c,v 1.24 2014/05/10 01:27:14 greg Exp $"; +static const char RCSid[] = "$Id: rcalc.c,v 1.25 2014/05/10 01:48:14 greg Exp $"; #endif /* * rcalc.c - record calculator program. @@ -801,7 +801,7 @@ struct field *f static void putrec(void) /* output a record */ { - char fmt[32], typ[32]; + char fmt[32], typ[16]; int n; struct field *f; int adlast, adnext; @@ -836,10 +836,13 @@ putrec(void) /* output break; case T_NUM: n = f->type & F_WID; - typ[0] = (n <= 6) ? 'g' : 'e'; - typ[1] = '\0'; dv = evalue(f->f.ne); - if ((av = fabs(dv)) < 1L<<31) { + av = fabs(dv); + if (n <= 9) + strcpy(typ, "g"); + else + sprintf(typ, ".%de", n-5); + if (av < 1L<<31) { long iv = (int)(av + .5); if (iv && fabs(av-iv) <= av*1e-14) strcpy(typ, ".0f");