gries/number-system

一个用于处理动态数字系统和转换的PHP库

dev-master 2015-01-10 18:12 UTC

This package is auto-updated.

Last update: 2024-09-16 21:23:17 UTC


README

此PHP库可用于进行动态数字系统的简单计算。

SensioLabsInsight

Build Status

安装

可以通过Composer安装Number-System。

composer require "gries/number-system"

用法

简单

use gries\NumberSystem\HexadecimalSystem;
use gries\NumberSystem\Number;

require_once __DIR__.'/../vendor/autoload.php';

$number = new Number(15); // the default system is decimal
$hexNumber = new Number('FF', new HexadecimalSystem());

echo $number->add($hexNumber)->value(); // 270 (15 + 255)
echo $hexNumber->add($number)->value(); // 10E (F + FF)

自定义数字系统

use gries\NumberSystem\Number;
use gries\NumberSystem\NumberSystem;

require_once __DIR__.'/../vendor/autoload.php';

$elementalSystem = new NumberSystem(['earth', 'fire', 'air', 'water'], '-');

// diffrent ways of creating a number
$number = new Number('fire-earth', $elementalSystem); // 4
$largerNumber = $elementalSystem->buildNumber(['fire', 'air', 'air']); // 26

// define your own number system and number
class YoloSystem extends NumberSystem
{
    public function __construct()
    {
        parent::__construct(['1337', 'yolo', 'swag'], '¿');
    }
}

class YoloNumber extends Number
{
    public function __construct($value)
    {
        parent::__construct($value, new YoloSystem());
    }
}

$foo = new YoloNumber('yolo¿swag¿yolo¿yolo¿yolo¿yolo¿swag');
echo $foo->asDecimalString(); // 1337

转换数学表达式

您可以使用ExpressionConverter将数学表达式从一个系统转换为另一个系统。

$decimal           = new NumberSystem();
$binary            = new BinaryNumberSystem();
$converter         = new ExpressionConverter();
$decimalExpression = new Expression('(1337 * 7) + sin(5)-2', $decimal);

echo $converter->convert($decimalExpression, $binary); // -> (10100111001 * 111) + sin(101)-10

当前限制(也称为待办事项)

  • 不支持负数
  • 不支持浮点数
  • 除法始终四舍五入到0,因为没有支持浮点数;)

运行测试

vendor/bin/phpspec run

贡献!

请通过github issues提供反馈/功能请求/错误报告。或者,只需发送一个pull-request :)

作者

许可证

有关完整的版权和许可信息,请查看与源代码一起分发的LICENSE文件。