STRPCT(3)

STRPCT(3) | Library Functions Manual | STRPCT(3)

# NAME

strpct, strspct — decimal percent formatters

# LIBRARY

System Utilities Library (libutil, -lutil)

# SYNOPSIS

#include <util.h>
char *
strpct(char *buf, size_t bufsiz, uintmax_t numerator, uintmax_t denominator, size_t precision);
char *
strspct(char *buf, size_t bufsiz, intmax_t numerator, intmax_t denominator, size_t precision);

# DESCRIPTION

The strpct() function formats the fraction represented by numerator and denominator into a percentage representation with given number of digits of precision without using floating point arithmetic.

# RETURN VALUES

strpct() and strspct() always return a pointer to a NUL-terminated (unless buflen is `0`) formatted string which is placed in buf and is up to buflen characters. If there was an overflow, the formatted string will reflect that precision loss.

# EXAMPLES

    strpct(buf, buflen, 1, 16, 3);
    ⇒ "6.250"
    strpct(buf, buflen, 1, 2, 0);
    ⇒ "50"

# HISTORY

strpct() was originally implemented in csh(1) for NetBSD 1.3. It printed into a static buffer, was not locale aware, handled unsigned long numbers, and printed a “%” at the end of the number. Other programs such as df(1) and time(1) started using it. strpct() and strspct() appeared separately in libutil for NetBSD 6.0.

# AUTHORS

Erik E. Fair <fair@netbsd.org>

January 7, 2012 | NetBSD 8.0