PHP从次要单位格式化多种货币

Posted

技术标签:

【中文标题】PHP从次要单位格式化多种货币【英文标题】:PHP formatting multiple currency from minor unit 【发布时间】:2018-10-05 00:51:30 【问题描述】:

我目前在数据库中以次要单位存储商品价格,以便轻松处理多种货币,例如 1500 美元 15.00 美元。

我尝试使用 php numberFormatter,但它似乎不支持次要单元,仅支持主要单元,当我将 1500 解析为 formatCurrency 时,我得到 1,500 美元而不是 15.00 美元。

会不会是超出numberFormatter 范围并需要其他库来处理的东西?

【问题讨论】:

您需要知道何时除以 100,但并非所有货币都这样做。以日元为例。 正如@IdontDownVote 所说。 number_format 只需添加逗号等。需要将其组织成有效数字,例如除以 100 以进行直接美分到美元的转换或通过factor 以转换为澳元或英镑等.那么你可以把它通过number_format 好看。 目前在数据库中我有货币和以美分为单位的价格。说1500澳元。我支持广泛的货币,所以我正在寻找可以解析以美分和货币为单位的价格并输出正确格式的东西。我以为numberFormatter 能够处理次要单位并将其自动转换为格式,但我发现我错了。我发现了其他 repo,例如 moneyphp 和 money,但是当我只想格式化数字时,它们似乎功能太多。 【参考方案1】:
$yourvalue = 1500;
$yourcurrency = $yourvalue / $currencyUnitValue;
echo $currencySymbol' '.number_format($yourcurrency, 2); 

例如:

$yourvalue = 1500;
$currencyUnitValue = 100;
$currencysymbol = '$'; 
$yourcurrency = $yourvalue / $currencyUnitValue;
echo $currencySymbol' '.number_format($yourcurrency, 2); // returns $ 15.00

这可以快速解决您的问题。我想还有更智能的答案。

【讨论】:

除了不是所有货币都使用“$”或有十进制值。

以上是关于PHP从次要单位格式化多种货币的主要内容,如果未能解决你的问题,请参考以下文章

PHP JSON 格式货币逗号

多种 AngularJS 货币格式,使用 i18n (Euro, DE)

php 将货币单位从đ更改为VNĐ

在 PHP 中打印货币数字格式

从 formatCurrency 中删除货币符号

如何在报表生成器中动态格式化货币字段?