customergauge/remainder

最大余数法计算

1.1.1 2020-12-11 12:09 UTC

This package is auto-updated.

Last update: 2024-09-11 20:13:01 UTC


README

这个库提供了使用最大余数法计算百分比的简单方法。 了解更多

安装

composer require customergauge/remainder

使用

use CustomerGauge\Math\Remainder\Remainder;

$remainder = new Remainder([1, 1, 1]);

$remainder->round(2); // [0.34, 0.33, 0.33]

简单来说,最大余数法的目的是确保在计算数据集中每个座位的重量时,总百分比不会是99.99或100.01。

上面的第一个例子是任意的,结果只向上取整了第一条记录,所以0.34 + 0.33 + 0.33 = 1,然而并不总是这样的决定是任意的。

use CustomerGauge\Math\Remainder\Remainder;

$remainder = new Remainder([92, 93, 70]);

$remainder->round(2); // [0.36, 0.37, 0.27]

正如我们所看到的,0.36 + 0.37 + 0.27 = 1,然而使用标准四舍五入,结果可能会有所不同。为了证明这一点,让我们计算92 + 93 + 70 = 255。每个值占整个的以下百分比

从上面的表格中我们可以看出,标准四舍五入丢失了一个百分点,因为所有三个数字都向下取整。最大余数法将扫描要丢弃的值(0.36078431370.36470588230.2745098039)并优先考虑贡献最大的值。在这种情况下,第二个值将丢弃47058823,这是最大的丢弃值。这使得向上取整以填补空缺变得可行。

虽然93也是最大的值,但这并不一定直接与四舍五入选项有关。我们可以再次使用一个非常小的数字来尝试相同的例子。取92 + 32 + 70 = 194