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>