Content-type: text/html Man page of floating_to_decimal

floating_to_decimal

Section: Standard C Library Functions (3C)
Updated: 7 Jun 2005
Index Return to Main Contents
 

NAME

floating_to_decimal, single_to_decimal, double_to_decimal, extended_to_decimal, quadruple_to_decimal - convert floating-point value to decimal record  

SYNOPSIS

#include <floatingpoint.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);

void quadruple_to_decimal(quadruple *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 pdsign and pdfpclass are set. Otherwise pdexponent and pdds are also set so that

(sig)*(pd->ds)*10**(pd->exponent)

is a correctly rounded approximation to *px, where sig is +1 or -1, depending upon whether pdsign is 0 or -1. pdds 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.

pdds is correctly rounded according to the IEEE rounding modes in pmrd. *ps has fp_inexact set if the result was inexact, and has fp_overflow set if the string result does not fit in pdds because of the limitation DECIMAL_STRING_LENGTH.

If pmdf == floating_form, then pdds always contains pmndigits significant digits. Thus if *px == 12.34 and pmndigits == 8, then pdds will contain 12340000 and pdexponent will contain -6.

If pmdf == fixed_form and pmndigits >= 0, then the decimal value is rounded at pmndigits digits to the right of the decimal point. For example, if *px == 12.34 and pmndigits == 1, then pdds will contain 123 and pdexponent will be set to -1.

If pmdf == fixed_form and pmndigits< 0, then the decimal value is rounded at -pmndigits digits to the left of the decimal point, and pdds is padded with trailing zeros up to the decimal point. For example, if *px == 12.34 and pmn digits == -1, then pdds will contain 10 and pdexponent will be set to 0.

When pmdf == fixed_form and the value to be converted is large enough that the resulting string would contain more than DECIMAL_STRING_LENGTH-1 digits, then the string placed in pdds is limited to exactly DECIMAL_STRING_LENGTH-1 digits (by moving the place at which the value is rounded further left if need be), pdexponent is adjusted accordingly and the overflow flag is set in *ps.

pd->more is not used.

The econvert(3C), fconvert(3C), gconvert(3C), printf(3C), and sprintf(3C) functions all use double_to_decimal().  

ATTRIBUTES

See attributes(5) for descriptions of the following attributes:

ATTRIBUTE TYPEATTRIBUTE VALUE
MT-LevelMT-Safe

 

SEE ALSO

econvert(3C), fconvert(3C), gconvert(3C), printf(3C), sprintf(3C), attributes(5)


 

Index

NAME
SYNOPSIS
DESCRIPTION
ATTRIBUTES
SEE ALSO

This document was created by man2html, using the manual pages.
Time: 02:37:18 GMT, October 02, 2010