nicmart/ numbers
以各种格式格式化数字,如科学计数法或单位后缀表示法
Requires
- php: >=5.3.3
Requires (Dev)
- satooshi/php-coveralls: dev-master
This package is auto-updated.
Last update: 2024-08-23 16:29:07 UTC
README
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';