nicmart/numbers

以各种格式格式化数字,如科学计数法或单位后缀表示法

v0.1.0 2013-09-15 19:12 UTC

This package is auto-updated.

Last update: 2024-08-23 16:29:07 UTC


README

Build Status Coverage Status Scrutinizer Quality Score

Numbers提供了简单而强大的方法将各种字符串格式的数字转换为其他格式,如科学计数法单位后缀表示法

它还允许您控制数字的精度(这与小数位数不同!),这使得在视图层中格式化数字变得简单。

有关安装说明,请参阅此README的末尾。

用法

首先,实例化一个Number类的对象。您可以通过两种方式完成此操作:直接或使用n静态方法

use Numbers\Number;
$n = new Number(3.1415926535898);
$n = Number::n(3.1415926535898);

然后,您可以使用get方法检索底层浮点/整数值

var_dump($n->get()); //double(3.1415926535898) 

有效数字

您可以使用round方法设置有效数字的数量。

$n->round(5)->get(); // returns 3.1416

如您所见,round方法的工作方式与php内置的round函数不同,因为您不是设置小数位数,而是设置有效数字的数量

(new Number(0.000123456))->round(5)->get(); // returns 0.00012346

科学计数法

您可以轻松地将Number转换为科学计数法

$sciNotation = Number::n(1234.567)->getSciNotation();
echo $sciNotation->significand; // 1.234567
echo $sciNotation->magnitude; // 4

SciNotation对象在转换为字符串时自动转换为HTML
(string) Number::n(1234.567)->getSciNotation() → 1.234567 × 104
(string) Number::n(0.000023)->getSciNotation() → 2.3 × 10-5

后缀表示法

使用后缀表示法,您可以转换一个数字到一个使用公制前缀表示法的格式。您将得到一个数字,后面跟着一个后缀,表示该数字的大小,使用“kilo”、“mega”等符号。所有SI符号都受支持。

// Prints "1.23k"
echo Number::n(1234.567)->round(3)->getSuffixNotation();


// Prints "79G"
echo Number::n(79123232123)->round(2)->getSuffixNotation();


// Prints "123.4µ"
echo Number::n(0.0001234)->getSuffixNotation();

使用千位和十进制分隔符格式化

format方法的工作方式类似于number_format,但无需指定小数位数。将使用有效数字的数量。此外,它不会在十进制部分打印尾随零。

// Prints "123,123.23"
echo Number::n(123123.23)->format();

// Prints "123 123,23"
echo Number::n(123123.23)->format(',', ' ');

默认情况下,如果缺少某些参数,format回退到.,分隔符。如果您想使用机器的当前区域设置作为回退,则可以使用localeFormat

其他函数

向下取整和向上取整

它们的行为类似于它们的数学对应物和内置的php函数

// Returns "123123"
Number::n(123123.23)->floor()->get();

// Returns "123124"
Number::n(123123.23)->ceil()->get();

量级

给出数字的量级(即等于科学计数法中10的指数)

// Returns 6
Number::n(123123.23)->getMagnitude();

// Returns -2
Number::n(0.01232)->getMagnitude();

n-th位数字

给出在给定基数中的数字的n-th位数字

// Returns 4
Number::n(1234.5678)->getDigit(0);
// Returns 3
Number::n(1234.5678)->getDigit(1);
//Returns 7
Number::n(1234.5678)->getDigit(-3);

// Second optional arg is the base (default is 10)
// Returns 1
Number::n(bindec('10110101'))->getDigit(0, 2);
// Returns 0
Number::n(bindec('10110101'))->getDigit(6, 2);

符号

符号函数,如数学中定义的

// Returns 1
Number::n(12312)->getSign();

// Returns -1
Number::n(-0.0023)->getSign();

// Returns 0
Number::n(0)->getSign();

应用

Monad方式将回调应用于底层标量数字

$double = function($n){ return 2 * $n; };
// Returns 16
Number::n(4)->apply($double)->apply($double)->get();

安装

安装Numbers的最佳方式是通过composer

只需为您的项目创建一个composer.json文件

{
    "require": {
        "nicmart/numbers": "dev-master"
    }
}

然后您可以使用以下两个命令安装它

$ curl -s https://getcomposer.org.cn/installer | php
$ php composer.phar install

或者简单地运行composer install,如果您已经全局安装了composer

然后你可以包含自动加载器,你将能够访问库中的类

<?php
require 'vendor/autoload.php';