setAttribute(\NumberFormatter::FRACTION_DIGITS, 0); return $numberFormatter->formatCurrency($value, 'USD'); } else { return $value; } } } /** * convert number expressions to value * * @assert ("34000") == "3万4000ドル" * @assert ("123456.789") == "12万3457ドル" * @assert ("1234567890") == "12億3456万7890ドル" * @assert ("17円") == "0.15ドル" */ 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 >= 1) { $formatted .= round($value); } else if ($formatted === '') { $formatted .= round($value, 2); } return $formatted . 'ドル'; } }