xrpld
Toggle main menu visibility
Loading...
Searching...
No Matches
include
xrpl
basics
MathUtilities.h
1
#pragma once
2
3
#include <
algorithm
>
4
#include <
cassert
>
5
#include <
cstddef
>
6
7
namespace
xrpl
{
8
24
constexpr
std::size_t
25
calculatePercent
(
std::size_t
count,
std::size_t
total)
26
{
27
assert(total != 0);
// NOTE No XRPL_ASSERT here, because constexpr
28
return
((
std::min
(count, total) * 100) + total - 1) / total;
29
}
30
31
// unit tests
32
static_assert
(
calculatePercent
(1, 2) == 50);
33
static_assert
(
calculatePercent
(0, 100) == 0);
34
static_assert
(
calculatePercent
(100, 100) == 100);
35
static_assert
(
calculatePercent
(200, 100) == 100);
36
static_assert
(
calculatePercent
(1, 100) == 1);
37
static_assert
(
calculatePercent
(1, 99) == 2);
38
static_assert
(
calculatePercent
(6, 14) == 43);
39
static_assert
(
calculatePercent
(29, 33) == 88);
40
static_assert
(
calculatePercent
(1, 64) == 2);
41
static_assert
(
calculatePercent
(0, 100'000'000) == 0);
42
static_assert
(
calculatePercent
(1, 100'000'000) == 1);
43
static_assert
(
calculatePercent
(50'000'000, 100'000'000) == 50);
44
static_assert
(
calculatePercent
(50'000'001, 100'000'000) == 51);
45
static_assert
(
calculatePercent
(99'999'999, 100'000'000) == 100);
46
47
}
// namespace xrpl
algorithm
cassert
cstddef
std::min
T min(T... args)
xrpl
Use hash_* containers for keys that do not need a cryptographically secure hashing algorithm.
Definition
algorithm.h:5
xrpl::calculatePercent
constexpr std::size_t calculatePercent(std::size_t count, std::size_t total)
Calculate one number divided by another number in percentage.
Definition
MathUtilities.h:25
std::size_t
Generated by
1.17.0