1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768 |
- /* $Id$ */
- #ifndef NOFLOAT
- extern char *fcvt();
- extern char *ecvt();
- char *
- _pfloat(r,s,n,b)
- double r;
- register char *s;
- {
- register char *s1;
- int sign,dp;
- register int i;
- if (b == 0)
- n = 6;
- s1 = fcvt(r,n,&dp,&sign);
- if (sign)
- *s++ = '-';
- if (dp<=0)
- *s++ = '0';
- for (i=dp; i>0; i--)
- if (*s1) *s++ = *s1++;
- else *s++ = '0';
- if ((i=n) > 0)
- *s++ = '.';
- while (++dp <= 0) {
- if (--i<0)
- break;
- *s++ = '0';
- }
- while (--i >= 0)
- if (*s1) *s++ = *s1++;
- else *s++ = '0';
- return(s);
- }
- char *_pscien(r,s,n,b) float r; register char *s; {
- int sign,dp;
- register char *s1;
- if (b == 0)
- n = 7;
- else n += 1;
- s1 = ecvt(r,n,&dp,&sign);
- if (sign)
- *s++ = '-';
- *s++ = *s1++;
- *s++ = '.';
- while (--n>0)
- if (*s1) *s++ = *s1++;
- else *s++ = '0';
- *s++ = 'e';
- if ( r ) --dp ;
- if ( dp<0 ) {
- *s++ = '-' ; dp= -dp ;
- } else {
- *s++ = '+' ;
- }
- if (dp >= 100) {
- *s++ = '0' + (dp / 100);
- dp %= 100;
- }
- *s++ = '0' + (dp/10);
- *s++ = '0' + (dp%10);
- return(s);
- }
- #endif
|