rioastamal/terbilang

一个将数字转换为印度尼西亚语数字的库

v1.0.2 2022-02-13 13:27 UTC

This package is auto-updated.

Last update: 2024-09-24 23:16:09 UTC


README

Build Status Latest Stable Version License codecov

关于

Terbilang是一个简单的库,用于将数字转换为印度尼西亚语数字。Terbilang可以将数字转换到七十二进位或1.0E+32(32个零)。Terbilang使用扩展bcmath来处理大数字,以便可以在超过PHP_INT_MAX的最大值进行计算。

以下是一个简单的Terbilang使用示例。

<?php
use RioAstamal\AngkaTerbilang\Terbilang;

echo Terbilang::create()->terbilang('5678');
// lima ribu enam ratus tujuh puluh delapan

echo Terbilang::create()->terbilang('5000,000,000,000,000,000,000,000,000.0021');
// lima ribu septiliun koma nol nol dua satu

需求

  • PHP >= 5.5
  • bcmath扩展

安装

要安装Terbilang,可以使用composer或通过手动方式使用require

Composer

确保composer已安装在您的系统上。然后运行以下命令来安装Terbilang。

$ composer require rioastamal/terbilang -vvv

手动安装

从Github克隆Terbilang项目。

$ git clone git@github.com:rioastamal/terbilang.git
$ cd terbilang

Terbilang库只包含一个文件,因此只需在Terbilang.php文件中使用require即可使用Terbilang。

<?php

require '/path/ke/terbilang/src/Terbilang.php';

bcmath安装

bcmath扩展默认已安装在大多数系统上,如MacOS X(通过homebrew)和Windows。要检查它,请在终端运行以下命令。

$ php -m|grep bcmath
bcmath

如果bcmath出现,则表示此扩展已在系统中安装。如果尚未安装,请使用以下命令安装。

Ubuntu上的安装

$ sudo apt-get install php-bcmath

示例

以下是一些使用Terbilang库及其输出的示例。terbilang()方法提供的参数必须是字符串形式的数字。对于更多示例,请参阅tests/TerbilangTest.php文件。

<?php
use RioAstamal\AngkaTerbilang\Terbilang;

$terbilang = new Terbilang();
$terbilang->terbilang('5');
// lima

$terbilang->terbilang('15');
// lima belas

$terbilang->terbilang('99');
// sembilan puluh sembilan

$terbilang->terbilang('787654321');
// tujuh ratus delapan puluh tujuh juta enam ratus lima puluh empat ribu tiga ratus dua puluh satu

$terbilang->terbilang('11000000001000222');
// sebelas ribu triliun satu juta dua ratus dua puluh dua

$terbilang->terbilang('1,000,000,000,000,000,000,000,000.0001');
// satu septiliun koma nol nol nol satu

Terbilang也支持使用千位分隔符。

$terbilang->terbilang('3,900');
// tiga ribu sembilan ratus

$terbilang->terbilang('1,011,000');
// satu juta sebelas ribu

在数字中使用小数点(点)作为分隔符。

$terbilang->terbilang('0.005');
// nol koma nol nol lima

$terbilang->terbilang('1,000,000.025');
// satu juta koma nol dua lima

在数字中使用小数点(逗号)作为分隔符。这是在印度尼西亚常用的写法。

// Ubah pemisah desimal ke ','
$terbilang->pemisahDesimal = ',';

$terbilang->terbilang('0,005');
// nol koma nol nol lima

$terbilang->terbilang('1.000.000,025');
// satu juta koma nol dua lima

terbilang()方法的快捷方式t()

$terbilang->t('1,200,000');
// satu juta dua ratus

单元测试

为了运行单元测试,建议使用位于vendor目录中的phpunit。这是通过composer安装的phpunit。

$ ./vendor/bin/phpunit --debug
PHPUnit 6.5.8 by Sebastian Bergmann and contributors.

Test 'RioAstamal\AngkaTerbilang\Test\TerbilangTest::testStaticInstance' started
Test 'RioAstamal\AngkaTerbilang\Test\TerbilangTest::testStaticInstance' ended
Test 'RioAstamal\AngkaTerbilang\Test\TerbilangTest::testTerbilangKurangDari12' started
Test 'RioAstamal\AngkaTerbilang\Test\TerbilangTest::testTerbilangKurangDari12' ended
Test 'RioAstamal\AngkaTerbilang\Test\TerbilangTest::testTerbilangBelasan' started
Test 'RioAstamal\AngkaTerbilang\Test\TerbilangTest::testTerbilangBelasan' ended
Test 'RioAstamal\AngkaTerbilang\Test\TerbilangTest::testTerbilangPuluhan' started
Test 'RioAstamal\AngkaTerbilang\Test\TerbilangTest::testTerbilangPuluhan' ended
Test 'RioAstamal\AngkaTerbilang\Test\TerbilangTest::testTerbilangRatusan' started
Test 'RioAstamal\AngkaTerbilang\Test\TerbilangTest::testTerbilangRatusan' ended
Test 'RioAstamal\AngkaTerbilang\Test\TerbilangTest::testTerbilangRibuan' started
Test 'RioAstamal\AngkaTerbilang\Test\TerbilangTest::testTerbilangRibuan' ended
Test 'RioAstamal\AngkaTerbilang\Test\TerbilangTest::testTerbilangJutaan' started
Test 'RioAstamal\AngkaTerbilang\Test\TerbilangTest::testTerbilangJutaan' ended
Test 'RioAstamal\AngkaTerbilang\Test\TerbilangTest::testTerbilangMilyaran' started
Test 'RioAstamal\AngkaTerbilang\Test\TerbilangTest::testTerbilangMilyaran' ended
Test 'RioAstamal\AngkaTerbilang\Test\TerbilangTest::testTerbilangTriliunan' started
Test 'RioAstamal\AngkaTerbilang\Test\TerbilangTest::testTerbilangTriliunan' ended
Test 'RioAstamal\AngkaTerbilang\Test\TerbilangTest::testTerbilangSeptiliun' started
Test 'RioAstamal\AngkaTerbilang\Test\TerbilangTest::testTerbilangSeptiliun' ended
Test 'RioAstamal\AngkaTerbilang\Test\TerbilangTest::testTerbilangDenganKoma' started
Test 'RioAstamal\AngkaTerbilang\Test\TerbilangTest::testTerbilangDenganKoma' ended
Test 'RioAstamal\AngkaTerbilang\Test\TerbilangTest::testAngkaKomaGanda' started
Test 'RioAstamal\AngkaTerbilang\Test\TerbilangTest::testAngkaKomaGanda' ended
Test 'RioAstamal\AngkaTerbilang\Test\TerbilangTest::testPemisahRibuanDenganBeberapaPemisah' started
Test 'RioAstamal\AngkaTerbilang\Test\TerbilangTest::testPemisahRibuanDenganBeberapaPemisah' ended
Test 'RioAstamal\AngkaTerbilang\Test\TerbilangTest::testPemisahDesimalBukanTitik' started
Test 'RioAstamal\AngkaTerbilang\Test\TerbilangTest::testPemisahDesimalBukanTitik' ended
Test 'RioAstamal\AngkaTerbilang\Test\TerbilangTest::testShortcutMethod' started
Test 'RioAstamal\AngkaTerbilang\Test\TerbilangTest::testShortcutMethod' ended


Time: 174 ms, Memory: 4.00MB

作者

Terbilang库由Rio Astamal编写 rio@rioastamal.net

许可证

本库使用MIT许可证 https://open-source.org.cn/licenses/MIT

替代方案

Terbilang使用除法、取模和递归技术。存在一些使用不同技术的类似库。