1: /*	@(#)gcvt.c	2.1	SCCS id keyword	*/
   2: /*
   3:  * gcvt  - Floating output conversion to
   4:  * minimal length string
   5:  */
   6: 
   7: char    *ecvt();
   8: 
   9: char *
  10: gcvt(number, ndigit, buf)
  11: double number;
  12: char *buf;
  13: {
  14:     int sign, decpt;
  15:     register char *p1, *p2;
  16:     register i;
  17: 
  18:     p1 = ecvt(number, ndigit, &decpt, &sign);
  19:     p2 = buf;
  20:     if (sign)
  21:         *p2++ = '-';
  22:     for (i=ndigit-1; i>0 && p1[i]=='0'; i--)
  23:         ndigit--;
  24:     if (decpt >= 0 && decpt-ndigit > 4
  25:      || decpt < 0 && decpt < -3) { /* use E-style */
  26:         decpt--;
  27:         *p2++ = *p1++;
  28:         *p2++ = '.';
  29:         for (i=1; i<ndigit; i++)
  30:             *p2++ = *p1++;
  31:         *p2++ = 'e';
  32:         if (decpt<0) {
  33:             decpt = -decpt;
  34:             *p2++ = '-';
  35:         } else
  36:             *p2++ = '+';
  37:         *p2++ = decpt/10 + '0';
  38:         *p2++ = decpt%10 + '0';
  39:     } else {
  40:         if (decpt<=0) {
  41:             if (*p1!='0')
  42:                 *p2++ = '.';
  43:             while (decpt<0) {
  44:                 decpt++;
  45:                 *p2++ = '0';
  46:             }
  47:         }
  48:         for (i=1; i<=ndigit; i++) {
  49:             *p2++ = *p1++;
  50:             if (i==decpt)
  51:                 *p2++ = '.';
  52:         }
  53:         if (ndigit<decpt) {
  54:             while (ndigit++<decpt)
  55:                 *p2++ = '0';
  56:             *p2++ = '.';
  57:         }
  58:     }
  59:     if (p2[-1]=='.')
  60:         p2--;
  61:     *p2 = '\0';
  62:     return(buf);
  63: }

Defined functions

gcvt defined in line 9; used 2 times
Last modified: 1981-07-10
Generated: 2016-12-26
Generated by src2html V0.67
page hit count: 637
Valid CSS Valid XHTML 1.0 Strict