arzdigitallabs / reduce-precision
一个用于降低数字精度的PHP包。
dev-main
2024-08-25 08:28 UTC
Requires
- php: >=7.4
Requires (Dev)
This package is auto-updated.
Last update: 2024-10-01 00:11:41 UTC
README
reduce-precision
是一个用于格式化和降低数字、货币和百分比精度的多功能包。它支持各种模板、精度级别、语言和输出格式,便于为不同的用例生成格式化字符串。
功能
- 以可定制的精度级别(高、中、低或自动)格式化数字
- 支持多个模板:数字、USD、IRT(伊朗托曼)、IRR(伊朗里亚尔)和百分比
- 多语言支持:英语和波斯语(法尔西)
- 输出格式:纯文本、HTML和Markdown
- 自定义HTML和Markdown输出的前缀和后缀标记
- 智能处理极小和极大数字
- 根据所选语言自动添加千位分隔符和十进制点
- 包含TypeScript类型定义
安装
Node.js / TypeScript
您可以使用npm安装 reduce-precision
npm install reduce-precision
PHP
您可以通过Composer安装 reduce-precision
的PHP版本
composer require arzdigitallabs/reduce-precision
用法
Node.js / TypeScript
import { NumberFormatter } from 'reduce-precision'; const formatter = new NumberFormatter(); formatter.setLanguage('en', { prefixMarker: 'strong', prefix: 'USD ' }); console.log(formatter.toHtmlString(123456789)); console.log(formatter.toJson(123456789)); console.log(formatter.toString(123456789));
PHP
require 'vendor/autoload.php'; use NumberFormatter\NumberFormatter; $formatter = new NumberFormatter(); echo $formatter->toString(12345.678); // Default format
选项
format
函数接受一个包含以下属性的可选 options
对象
示例
TypeScript/Node.js
import { NumberFormatter } from 'reduce-precision'; // Create a formatter instance with default options const formatter = new NumberFormatter(); // Basic usage formatter.setLanguage('en'); // Basic number formatting formatter.toJson(1234.5678); // Output: { value: '1,234.6', ... } // Formatting with medium precision formatter.setTemplate('number', 'medium').toJson(1234.5678); // Output: { value: '1.23K', ... } // Formatting as USD formatter.setTemplate('usd', 'high').toJson(1234.5678); // Output: { value: '$1,234.6', ... } // Formatting as Iranian Rial with Persian numerals formatter.setLanguage('fa'); formatter.setTemplate('irr', 'medium').toJson(1234.5678); // Output: { value: '۱٫۲۳ هزار ریال', ... } // Formatting as a percentage with low precision formatter.setTemplate('percent', 'low').toJson(0.1234); // Output: { value: '0.12%', ... } // Formatting with HTML output and custom markers formatter .setLanguage('en', { prefixMarker: 'strong', prefix: 'USD ' }) .toHtmlString(1234.5678); // Output: <strong>USD </strong>1,234.6 // Formatting with string input for small or big numbers formatter.setTemplate('usd', 'medium').toJson('0.00000000000000000000005678521'); // Output: { value: '$0.0₂₂5678', ... }
PHP
require 'vendor/autoload.php'; use NumberFormatter\NumberFormatter; $formatter = new NumberFormatter(); echo $formatter->toString(12345.678); // Default format $formatter->setLanguage('fa'); echo $formatter->toString(12345.678); // Output in Persian $formatter->setTemplate('usd', 'high'); echo $formatter->toString(12345.678); // Output in USD format with high precision echo $formatter->toHtmlString(12345.678); // HTML formatted output echo $formatter->toMdString(12345.678); // Markdown formatted output
API
FormattedObject
接口(TypeScript/Node.js)
FormattedObject
接口表示由 format
方法返回的格式化数字对象的结构。
interface FormattedObject { value: string; // The formatted value as a string prefix: string; // The prefix string postfix: string; // The postfix string sign: string; // The sign of the number (either an empty string or '-') wholeNumber: string; // The whole number part of the value }
NumberFormatter
类(PHP)
构造函数
创建一个新的 NumberFormatter
类实例,带可选配置选项。
setLanguage
设置格式化器的语言和可选语言配置。
setTemplate
设置格式化器的模板和精度。
toString
将输入数字格式化为字符串。
toPlainString
将输入数字格式化为纯文本字符串。
toHtmlString
将输入数字格式化为HTML字符串。
toMdString
将输入数字格式化为Markdown字符串。
测试
Node.js / TypeScript
您可以使用Jest或其他任何首选的测试框架运行TypeScript测试。
PHP
您可以使用PHPUnit运行测试。
./vendor/bin/phpunit tests
贡献
欢迎贡献!如果您发现错误或有功能请求,请在GitHub存储库上打开一个问题。如果您想贡献代码,请分支存储库并提交一个pull请求。
许可
本项目采用MIT许可。