Museum

Home

Lab Overview

Retrotechnology Articles

Online Manuals

⇒ floating_to_decimal(3BSD) — UnixWare 2.01

Media Vault

Software Library

Restoration Projects

Artifacts Sought

Related Articles

econvert(3BSD)

fprintf(3S)

fprintf(3S)

strtod(3C)






       floating_to_decimal(3(BSD System Compatibilfloating_to_decimal(3BSD)


       NAME
             floating_to_decimal: single_to_decimal, double_to_decimal,
             extended_to_decimal - (BSD) convert floating-point value to
             decimal record

       SYNOPSIS
             /usr/ucb/cc [flag . . . ] file . . .
             #include <fp.h>
             void single_to_decimal(single *px,
                   decimal_mode *pm, decimal_record *pd,
                   fp_exception_field_type *ps);
             void double_to_decimal(double *px,
                   decimal_mode *pm, decimal_record *pd,
                   fp_exception_field_type *ps);
             void extended_to_decimal(extended *px,
                   decimal_mode *pm, decimal_record *pd,
                   fp_exception_field_type *ps);

       DESCRIPTION
             The floating_to_decimal functions convert the floating-point
             value at *px into a decimal record at *pd, observing the modes
             specified in *pm and setting exceptions in *ps.  If there are
             no IEEE exceptions, *ps will be zero.

             If *px is zero, infinity, or NaN, then only pd->sign and pd-
             >fpclass are set.  Otherwise pd->exponent and pd->ds are also
             set so that
                   (pd->sign)*(pd->ds)*10**(pd->exponent)

             is a correctly rounded approximation to *px.  pd->ds has at
             least one and no more than DECIMAL_STRING_LENGTH-1 significant
             digits because one character is used to terminate the string
             with a NULL.

             pd->ds is correctly rounded according to the IEEE rounding
             modes in pm->rd.  *ps has fp_inexact set if the result was
             inexact, and has fp_overflow set if the string result does not
             fit in pd->ds because of the limitation DECIMAL_STRING_LENGTH.

             If pm->df==floating_form, then pd->ds always contains pm-
             >ndigits significant digits.  Thus if *px == 12.34 and pm-
             >ndigits == 8, then pd->ds will contain 12340000 and pd-
             >exponent will contain -6.





                           Copyright 1994 Novell, Inc.               Page 1













      floating_to_decimal(3(BSD System Compatibilfloating_to_decimal(3BSD)


            If pm->df==fixed_form and pm->ndigits >= 0, then pd->ds always
            contains pm->ndigits after the point and as many digits as
            necessary before the point.  Since the latter is not known in
            advance, the total number of digits required is returned in
            pd->ndigits; if that number >= DECIMAL_STRING_LENGTH, then ds
            is undefined.  pd->exponent always gets -pm->ndigits.  Thus if
            *px == 12.34 and pm->ndigits == 1, then pd->ds gets 123, pd-
            >exponent gets -1, and pd->ndigits gets 3.

            If pm->df==fixed_form and pm->ndigits < 0, then pm->ds always
            contains -pm->ndigits trailing zeros; in other words, rounding
            occurs -pm->ndigits to the left of the decimal point, but the
            digits rounded away are retained as zeros.  The total number
            of digits required is in pd->ndigits.  pd->exponent always
            gets 0.  Thus if *px == 12.34 and pm->ndigits == -1, then pd-
            >ds gets 10, pd->exponent gets 0, and pd->ndigits gets 2.
            pd->more is not used.

            econvert, fconvert, and gconvert [see econvert(3BSD)], as well
            as printf and sprintf [see fprintf(3S)], all use
            double_to_decimal.

      REFERENCES
            econvert(3BSD), fprintf(3S)

            Note: Most applications should use sprintf [see fprintf(3S)],
            strtod(3C) and strtold [see strtod(3C)] instead of these
            functions.




















                          Copyright 1994 Novell, Inc.               Page 2








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