我想将日本货币格式化为标准的“快速可读”格式。
基本上,所有超过10,000日元的金额都使用字符“万”(发音为“ man”)书写。
有关“万”的更多信息 http://www.romajidesu.com/kanji/%E4%B8%87
因此,1,000,000日元仅表示100万或“一百个人”。大约是1,000美元。
在日本,几乎没有人会说“一百万日元”。货币总是被分成10,000日元的捆。
因此,当您购买汽车时,挡风玻璃上的标签上会显示“例如140万”
所以,我想显示这种格式。但是,我相信number_format不允许将分隔定义为10,000,并且money_format同样无济于事。
对实现此目标的最佳实践方法有何想法?
总结:
答案 0 :(得分:0)
我想出的解决方案与上述类似。
function format_yen_for_display($yenAmount)
{
/*
Converts Japanese currency to easily readable local format
10,000 yen should read 1万
100,000 yen should read 10万
1,000,000 yen should read 100万
1,259,000 yen should read 125万 9,000円
*/
if($yenAmount > 10000)
{
//amount over 1万
$manYen = floor($yenAmount/10000);
//amount under 1万
$remainderYen = ($yenAmount - ($manYen * 10000));
//concat
$returnNum = "<span class=\"ylarge\">" . $manYen . "万</span>";
//if remainder is more than zero, show it
if($remainderYen > 0)
{
//format remainder with thousands separator
$remainderYen = number_format($remainderYen);
$returnNum .= "<span class=\"ysmall\">" . $remainderYen ."円</span>";
}
}
else
{
$returnNum = "<span class=\"ylarge\">" . $yenAmount . "円</span>";
}
return $returnNum;
}
答案 1 :(得分:-1)
我曾经在我的WordPress plugin中写过,
/**
* convert number expressions to value
*
* @assert ("34000") == "3万4000円"
* @assert ("123456.789") == "12万3457円"
* @assert ("1234567890") == "12億3456万7890円"
* @assert ("92610000000000") == "92兆6100億円"
*/
public static function formatInJapanese($value) {
$isApproximate = false;
$formatted = '';
if ($value > 1000000000000) {
if ($value % 1000000000000 !== 0) {
$isApproximate = true;
}
$unitValue = floor($value / 1000000000000);
$formatted .= $unitValue . '兆';
$value -= $unitValue * 1000000000000;
}
if ($value > 100000000) {
if ($value % 100000000 !== 0
&& !$isApproximate) {
$isApproximate = true;
}
$unitValue = floor($value / 100000000);
$formatted .= $unitValue . '億';
$value -= $unitValue * 100000000;
}
if ($value > 10000) {
if ($value % 10000 !== 0
&& !$isApproximate) {
$isApproximate = true;
}
$unitValue = floor($value / 10000);
$formatted .= $unitValue . '万';
$value -= $unitValue * 10000;
}
if ($value != 0) {
$formatted .= round($value);
}
return $formatted . '円';
}
它仅适用于man,oku和cho。
快速搜索使我发现Ruby gem number_to_yen的作用与此相似。