Museum

Home

Lab Overview

Retrotechnology Articles

Online Manuals

⇒ econvert(3) — Atari System V ue12

Media Vault

Software Library

Restoration Projects

Artifacts Sought

Related Articles

sprintf(3S)





   econvert(3)             (BSD Compatibility Package)             econvert(3)


   NAME
         econvert, fconvert, gconvert, seconvert, sfconvert, sgconvert -
         output conversion

   SYNOPSIS
         cc [ flag... ] file ...  -lucb
         #include <floatingpoint.h>

         char *econvert(value, ndigit, decpt, sign, buf)
         double value;
         int ndigit, *decpt, *sign;
         char *buf;

         char *fconvert(value, ndigit, decpt, sign, buf)
         double value;
         int ndigit, *decpt, *sign;
         char *buf;

         char *gconvert(value, ndigit, trailing, buf)
         double value;
         int ndigit;
         int trailing;
         char *buf;

         char *seconvert(value, ndigit, decpt, sign, buf)
         single *value;
         int ndigit, *decpt, *sign;
         char *buf;

         char *sfconvert(value, ndigit, decpt, sign, buf)
         single *value;
         int ndigit, *decpt, *sign;
         char *buf;

         char *sgconvert(value, ndigit, trailing, buf)
         single *value;
         int ndigit;
         int trailing;
         char *buf;

   DESCRIPTION
         econvert converts the value to a NULL-terminated string of ndigit
         ASCII digits in buf and returns a pointer to buf.  buf should contain
         at least ndigit+1 characters.  The position of the decimal point
         relative to the beginning of the string is stored indirectly through
         decpt.  Thus buf == "314" and *decpt == 1 corresponds to the
         numerical value 3.14, while buf == "314" and *decpt == -1 corresponds
         to the numerical value .0314.  If the sign of the result is negative,
         the word pointed to by sign is nonzero; otherwise it is zero.  The
         least significant digit is rounded.



   7/91                                                                 Page 1









   econvert(3)             (BSD Compatibility Package)             econvert(3)


         fconvert works much like econvert, except that the correct digit has
         been rounded as if for sprintf(%w.nf) output with n=ndigit digits to
         the right of the decimal point.  ndigit can be negative to indicate
         rounding to the left of the decimal point.  The return value is a
         pointer to buf.  buf should contain at least 310+max(0,ndigit)
         characters to accommodate any double-precision value.

         gconvert converts the value to a NULL-terminated ASCII string in buf
         and returns a pointer to buf.  It produces ndigit significant digits
         in fixed-decimal format, like sprintf(%w.nf), if possible, and
         otherwise in floating-decimal format, like sprintf(%w.ne); in either
         case buf is ready for printing, with sign and exponent.  The result
         corresponds to that obtained by

               (void) sprintf(buf,``%w.ng'',value) ;

         If trailing= 0, trailing zeros and a trailing point are suppressed,
         as in sprintf(%g).  If trailing!= 0, trailing zeros and a trailing
         point are retained, as in sprintf(%#g).

         seconvert, sfconvert, and sgconvert are single-precision versions of
         these functions, and are more efficient than the corresponding
         double-precision versions.  A pointer rather than the value itself is
         passed to avoid C's usual conversion of single-precision arguments to
         double.

         IEEE Infinities and NaNs are treated similarly by these functions.
         ``NaN'' is returned for NaN, and ``Inf'' or ``Infinity'' for
         Infinity.  The longer form is produced when ndigit > 8.

   SEE ALSO
         sprintf(3S) in the Programmer's Reference Manual.





















   Page 2                                                                 7/91





Typewritten Software • bear@typewritten.org • Edmonds, WA 98026