louisgab/php-calc

简单的流畅浮点操作库

v0.2.0 2020-12-23 19:49 UTC

This package is auto-updated.

Last update: 2024-09-29 05:43:03 UTC


README

Tests Packagist Version Packagist Downloads GitHub license

💯 简单流畅的浮点操作库。

Calc旨在提供易于阅读和没有任何依赖的计算工具。
它包含一个Number,这是一个不可变值对象,可以启用流畅的浮点操作。

为什么

如果你曾经处理过满是这种垃圾的代码库

$result = round(($b != 0 ? ((1+$a)/$b) : $c)*0.25, 2)

我敢肯定你会喜欢它

$result = Number::of($b)
    ->when(Number::of($b)->isZero(),
        fn($b) => $c
        fn($b) => Number::one()->plus($a)->divide($b),
    )
    ->multiply(0.25)
    ->round(2)
    ->value()

你可能认为它与brick/math类似,这是一个非常好的包,但Calc的目的不同。
如果你对浮点数足够满意——除非你处理的是会计或科学等重要数据,否则应该如此——那么使用GMP或bcmath就是过度了。

这就是Calc的用途,仍然使用浮点数,同时享受良好的可读性。另一个优点是它尽可能地处理浮点数问题(例如0.1 + 0.2 == 0.3 // false),这样你就不必每次都考虑它(如果你与初级开发者合作,这还会帮他们避免一些他们甚至不知道存在的问题!)。

安装

通过composer

composer require louisgab/php-calc

使用方法

简单到

use Louisgab\Calc\Number;

Number::of($anything);

并且好用到

public function carsNeeded(Number $people, Number $placesPerCar): int
{
    return $people->divide($placesPerCar)->round(0)->toInt();
}

请参阅DOCS

测试

composer test

路线图

  • Number
  • 分数
  • 百分比

变更日志

请参阅CHANGELOG

贡献

非常欢迎!

许可证

请参阅MIT许可证(MIT)