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