\" $NetBSD: strpct.3,v 1.7 2025/05/03 07:22:52 rillig Exp $
\"
\" Copyright (c) 2011 The NetBSD Foundation, Inc.
\" All rights reserved.
\"
\" This file was contributed to The NetBSD Foundation by Christos Zoulas.
\"
\" Redistribution and use in source and binary forms, with or without
\" modification, are permitted provided that the following conditions
\" are met:
\" 1. Redistributions of source code must retain the above copyright
\"    notice, this list of conditions and the following disclaimer.
\" 2. Redistributions in binary form must reproduce the above copyright
\"    notice, this list of conditions and the following disclaimer in the
\"    documentation and/or other materials provided with the distribution.
\"
\" THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
\" ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
\" TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
\" PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
\" BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
\" CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
\" SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
\" INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
\" CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
\" ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
\" POSSIBILITY OF SUCH DAMAGE.
\"
Dd May 3, 2025
Dt STRPCT 3
Os
Sh NAME
Nm strpct ,
Nm strspct
Nd decimal percent formatters
Sh LIBRARY
Lb libutil
Sh SYNOPSIS
In util.h
Ft char *
Fn strpct "char *buf" "size_t bufsiz" "uintmax_t numerator" "uintmax_t denominator" "size_t precision"
Ft char *
Fn strspct "char *buf" "size_t bufsiz" "intmax_t numerator" "intmax_t denominator" "size_t precision"
Sh DESCRIPTION
The
Fn strpct
function formats the fraction represented by
Fa numerator
and
Fa denominator
into a percentage representation with given number of digits of
Fa precision
without using floating point arithmetic.
Sh RETURN VALUES
Fn strpct
and
Fn strspct
always return a pointer to a NUL-terminated (unless
Fa bufsiz
is
Dv 0 )
formatted string which
is placed in
Fa buf .
Sh EXAMPLES
Bd -literal -offset indent
strpct(buf, sizeof(buf), 1, 16, 3);
\(rA "6.250"
strpct(buf, sizeof(buf), 1, 2, 0);
\(rA "50"
Ed
Sh HISTORY
Fn strpct
was originally implemented in
Xr csh 1
for
Nx 1.3 .
It printed into a static buffer, was not locale aware, handled
Ft unsigned long
numbers, and printed a
Dq %
at the end of the number.
Other programs such as
Xr df 1
and
Xr time 1
started using it.
Fn strpct
and
Fn strspct
appeared separately in libutil for
Nx 6.0 .
Sh AUTHORS
An Erik E. Fair Aq Mt [email protected]
An Roland Illig Aq Mt [email protected]