customergauge / remainder
最大余数法计算
1.1.1
2020-12-11 12:09 UTC
Requires
- php: >=7.1
Requires (Dev)
- phpunit/phpunit: ^9.0
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.3607843137,0.3647058823,0.2745098039)并优先考虑贡献最大的值。在这种情况下,第二个值将丢弃47058823
,这是最大的丢弃值。这使得向上取整以填补空缺变得可行。
虽然93
也是最大的值,但这并不一定直接与四舍五入选项有关。我们可以再次使用一个非常小的数字来尝试相同的例子。取92 + 32 + 70 = 194
。