lubosdz/number-to-words

数字转文字转换 - 本地化。

1.0.6 2024-08-15 12:43 UTC

This package is auto-updated.

Last update: 2024-09-15 13:03:55 UTC


README

PHP 工具,用于将任意浮点数或整数数字转换为文字,主要支持英语、斯洛伐克语和捷克语。这些具有自定义 PHP 实现,可以修复 INTL/ICU 程序错误,并允许输出定制。也支持其他语言,但仅使用 INTL/ICU PHP 扩展,可能存在错误。

安装

  • 通过 composer
$ composer require "lubosdz/number-to-words" : "~1.0.0"

演示 & 仓库

用法

// use either factory ..
use lubosdz\numberToWords\NumberToWords;

// .. or language specific implementation
use lubosdz\numberToWords\NumberToWords_SK;
use lubosdz\numberToWords\NumberToWords_CZ;
use lubosdz\numberToWords\NumberToWords_EN;

// Slovensky / Slovak
NumberToWords::convert(123.45, 'sk'); // jednostodvadsaťtri celé štyridsaťpäť
NumberToWords_SK::convert(123.45); // jednostodvadsaťtri celé štyridsaťpäť
NumberToWords_SK::convertIntl(123.45); // jedna­sto dvasať­tri čiarka štyri päť (ICU returns "dvasať", bug)

// supply number as string - will retain right-sided zeroes on decimal part
NumberToWords_SK::convert(37.40); // tridsaťsedem celé štyri - strip off right-sided zeroes
NumberToWords_SK::convert("37.40"); // tridsaťsedem celé štyridsať - keep right-sided zeroes
NumberToWords_SK::convert("37.400"); // tridsaťsedem celé štyristo - keep right-sided zeroes

// arbitrary decimals word separator
NumberToWords_EN::$txtDecimal = " čiarka ";
NumberToWords_EN::convert(12.30); // dvanásť čiarka tridsať

// with decimals as a fraction - useful in accounting
NumberToWords::$decimalsAsFraction = true;
NumberToWords::convert(123.45, 'sk'); // jednostodvadsaťtri (45/100)

// enforce desired number of decimals
NumberToWords::$numberOfdecimals = 2;
NumberToWords::convert(12.3, 'sk'); // dvanásť celé tridsať

// Česky / Czech:
NumberToWords::convert(123.45, 'cz'); // allowed cz or cs, // sto dvacet tři celá čtyřicet pět
NumberToWords_CZ::convert(123.45); // sto dvacet tři celá čtyřicet pět
NumberToWords_CZ::convertIntl(123.45); // sto dvacet tři celá čtyři pět

// English:
NumberToWords::convert(123.45); // lang code not needed since english is default
NumberToWords_EN::convert(123.45); // one hundred twenty-three point fourty-five
NumberToWords_EN::convertIntl(123.45); // one hundred twenty-three point four five

// arbitrary decimals word separator
NumberToWords_EN::$txtDecimal = " comma ";
NumberToWords_EN::convert(12.30); // twelve comma thirty

// really big number:
NumberToWords_EN::convert(987654321.123);
// nine hundred eighty-seven million, six hundred fifty-four thousand, three hundred twenty-one point one hundred twenty-three

NumberToWords_EN::convertIntl(987654321.123);
// nine hundred eighty-seven million six hundred fifty-four thousand three hundred twenty-one point one two three

// Russian:
NumberToWords::convert(123.45, 'ru'); // сто двадцать три целых сорок пять сотых

// German:
NumberToWords::convert(123.45, 'de'); // ein­hundert­drei­und­zwanzig Komma vier fünf

// French:
NumberToWords::convert(123.45, 'fr'); // cent vingt-trois virgule quatre cinq

变更日志

1.0.6 - 15.08.2024

  • 支持强制数字的小数位数

1.0.5 - 10.08.2024

  • 使小数分隔符可配置为文字
  • 阐明如何在小数部分保留右填充的零
  • 添加了测试

1.0.4 - 04.02.2024

  • 支持小数作为分数
  • 修复了小数部分左侧的零
  • 添加了单元测试

1.0.3 - 02.07.2023

  • 修复了 PHP 8.2 兼容性

1.0.2 - 12.03.2021

  • 通过 INTL/ICU 扩展扩展对任何语言的支持

1.0.1 - 12.03.2021

  • 添加了工厂类 NumberToWords::convert($num, $lang)

1.0.0 - 22.05.2020

  • 初始发布(SK, EN, CZ)