将大量数字转换为英语口语
将“小”数字转换为英文并不麻烦。但如果您处理 BCMath 任意精度数字,则可以。
使用以下代码:
http://marc.info/?l=php -general&m=99928281523866&w=2
最大数量似乎是:
二十亿一百四十七 万四百八十三 千六百四十七
有人知道转换比这更大的数字的函数吗?
Converting 'small' numbers to English is not to troublesome. But if you handle BCMath Arbitrary Precision numbers then it can be.
Using code from:
http://marc.info/?l=php-general&m=99928281523866&w=2
The maximum number seems to be:
two billion one hundred forty seven
million four hundred eighty three
thousand six hundred forty seven
Anyone know a function to convert numbers bigger than that?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
你必须编写自己的函数,我建议使用数字作为字符串,让像这样的减法:
示例:
将输出
You have to write your own function, I suggest to use numbers as a string, let a substract like this:
example:
will output
对于大于
PHP_MAX_INT
的数字,您必须依赖外部服务编写函数,例如 WolframAlpha。PHP 为此提供的唯一功能是 Intl 的
NumberFormatter
。NumberFormatter::format
接受浮点数,但这意味着它只能处理 64 位长架构中最大 2^63-1 的整数或 32 位长架构中的 52 位数字。For numbers larger than
PHP_MAX_INT
, you'll have to either write the function on rely on an external service, such as WolframAlpha.The only functionality PHP offers for this is Intl's
NumberFormatter
.NumberFormatter::format
accepts floats, but this means it can only handle integers up to 2^63-1 in 64-bit long architectures or 52-bit numbers in 32-bit ones.我编写了 vpi2english 函数来处理大至 10^306 - 1 的整数。它是我的 VPI 工具箱。
I wrote the vpi2english function to handle integers as large as 10^306 - 1. It is part of my VPI toolbox.