arzdigitallabs/reduce-precision

一个用于降低数字精度的PHP包。

dev-main 2024-08-25 08:28 UTC

This package is auto-updated.

Last update: 2024-10-01 00:11:41 UTC


README

Known Vulnerabilities Build Status codecov.io Code Coverage Code Climate NPM Version

reduce-precision 是一个用于格式化和降低数字、货币和百分比精度的多功能包。它支持各种模板、精度级别、语言和输出格式,便于为不同的用例生成格式化字符串。

功能

  • 以可定制的精度级别(高、中、低或自动)格式化数字
  • 支持多个模板:数字、USD、IRT(伊朗托曼)、IRR(伊朗里亚尔)和百分比
  • 多语言支持:英语和波斯语(法尔西)
  • 输出格式:纯文本、HTML和Markdown
  • 自定义HTML和Markdown输出的前缀和后缀标记
  • 智能处理极小和极大数字
  • 根据所选语言自动添加千位分隔符和十进制点
  • 包含TypeScript类型定义

安装

Node.js / TypeScript

您可以使用npm安装 reduce-precision

npm install reduce-precision

NPM Download Stats

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许可