php 数字转英文格式化
时间: 2023-07-16 20:13:11 浏览: 51
可以使用以下代码实现将数字转换为英文格式:
```php
function numberToWords($number) {
$words = array(
0 => 'Zero',
1 => 'One',
2 => 'Two',
3 => 'Three',
4 => 'Four',
5 => 'Five',
6 => 'Six',
7 => 'Seven',
8 => 'Eight',
9 => 'Nine',
10 => 'Ten',
11 => 'Eleven',
12 => 'Twelve',
13 => 'Thirteen',
14 => 'Fourteen',
15 => 'Fifteen',
16 => 'Sixteen',
17 => 'Seventeen',
18 => 'Eighteen',
19 => 'Nineteen',
20 => 'Twenty',
30 => 'Thirty',
40 => 'Forty',
50 => 'Fifty',
60 => 'Sixty',
70 => 'Seventy',
80 => 'Eighty',
90 => 'Ninety'
);
if (!is_numeric($number)) {
return false;
}
if (($number >= 0 && (int) $number < 0) || (int) $number < 0 - PHP_INT_MAX) {
// overflow
trigger_error(
'numberToWords only accepts numbers between -' . PHP_INT_MAX . ' and ' . PHP_INT_MAX,
E_USER_WARNING
);
return false;
}
if ($number < 0) {
return 'minus ' . numberToWords(abs($number));
}
$string = $fraction = null;
if (strpos($number, '.') !== false) {
list($number, $fraction) = explode('.', $number);
}
switch (true) {
case $number < 21:
$string = $words[$number];
break;
case $number < 100:
$tens = ((int) ($number / 10)) * 10;
$units = $number % 10;
$string = $words[$tens];
if ($units) {
$string .= ' ' . $words[$units];
}
break;
case $number < 1000:
$hundreds = $number / 100;
$remainder = $number % 100;
$string = $words[$hundreds] . ' Hundred';
if ($remainder) {
$string .= ' ' . numberToWords($remainder);
}
break;
case $number < 1000000:
$thousands = $number / 1000;
$remainder = $number % 1000;
$string = numberToWords($thousands) . ' Thousand';
if ($remainder) {
$string .= ' ' . numberToWords($remainder);
}
break;
case $number < 1000000000:
$millions = $number / 1000000;
$remainder = $number % 1000000;
$string = numberToWords($millions) . ' Million';
if ($remainder) {
$string .= ' ' . numberToWords($remainder);
}
break;
case $number < 1000000000000:
$billions = $number / 1000000000;
$remainder = fmod($number, 1000000000);
$string = numberToWords($billions) . ' Billion';
if ($remainder) {
$string .= ' ' . numberToWords($remainder);
}
break;
case $number < 1000000000000000:
$trillions = $number / 1000000000000;
$remainder = fmod($number, 1000000000000);
$string = numberToWords($trillions) . ' Trillion';
if ($remainder) {
$string .= ' ' . numberToWords($remainder);
}
break;
default:
$string = 'Number is too large to convert!';
break;
}
if (null !== $fraction && is_numeric($fraction)) {
$string .= ' and ' . numberToWords((int) $fraction) . ' cents';
}
return $string;
}
```
然后可以通过以下方式调用该函数:
```php
$number = 123456789;
echo numberToWords($number); // One Hundred Twenty Three Million Four Hundred Fifty Six Thousand Seven Hundred Eighty Nine
```