Форматирование японской валюты для удобства чтения - PullRequest
0 голосов
/ 15 октября 2018

Я бы хотел отформатировать японскую валюту в стандартный «быстро читаемый» формат.

По сути, все суммы свыше 10 000 иен пишутся с использованием символа «万» (произносится «человек»).

Подробнее о «万» http://www.romajidesu.com/kanji/%E4%B8%87

Итак, 1 000 000 иен - это просто 100 万 или «сто человек».Это примерно 1000 долларов США.

Практически никто в Японии никогда не скажет "миллион иен".Валюта всегда разбита на связки по 10 000 иен.

Следовательно, когда вы покупаете автомобиль, наклейка на лобовом стекле говорит (например) «140 140»

Итак, яЯ хотел бы отобразить этот формат.Однако number_format, я полагаю, не позволяет определить разделение в 10 000, а money_format также бесполезен.

Есть ли какие-либо мысли о методе наилучшей практики для достижения этой цели?

В заключение:

  • 10 000 иен следует читать 1 万
  • 100 000 иен следует читать 10 万
  • 1 000 000 иен следует читать 100 万

Ответы [ 2 ]

0 голосов
/ 16 октября 2018

Решение, которое я придумал, аналогично приведенному выше.

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;
}
0 голосов
/ 15 октября 2018

Я когда-либо писал, что в моем плагине WordPress ,

/**
 * 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 . '円';
}

Он работает только с человеком, оку и чо.

Быстрый поиск дает мне этот Rubygem number_to_yen делает подобное.

...