Updated: 2025/Nov/16
Please read Privacy Policy. It's for your privacy.
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 bufsiz is 0) formatted string which is placed in buf.
EXAMPLES
strpct(buf, sizeof(buf), 1, 16, 3);
=> "6.250"
strpct(buf, sizeof(buf), 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>
Roland Illig <rillig@NetBSD.org>
NetBSD 11.99 May 3, 2025 NetBSD 11.99