ページの作成
親となるページを選択してください。
親ページに紐づくページを子ページといいます。
例: 親=スポーツ, 子1=サッカー, 子2=野球
子ページを親ページとして更に子ページを作成することも可能です。
例: 親=サッカー, 子=サッカーのルール
親ページはいつでも変更することが可能なのでとりあえず作ってみましょう!
| この記事の要点 |
|
number_format の基本
会計画面・請求書・統計表示で「1234567 → 1,234,567」のようなカンマ区切りは事実上必須です。PHP では number_format() が定番ツール。
<?php
echo number_format(1234567); // 1,234,567
echo number_format(1234.5678); // 1,235 (四捨五入)
echo number_format(0); // 0
echo number_format(-1234567); // -1,234,567
echo number_format('1234567'); // 1,234,567 (文字列もOK)
引数の全パターン
| 引数 | 意味 | 既定値 |
|---|---|---|
第 1: $num | 整形対象の数値 (int / float / 数値文字列) | 必須 |
第 2: $decimals | 小数桁数 | 0 |
第 3: $decimal_separator | 小数点記号 | '.' |
第 4: $thousands_separator | 千の位区切り記号 | ',' |
<?php
$n = 1234567.891;
// 小数 2 桁
echo number_format($n, 2);
// → 1,234,567.89
// 小数 4 桁
echo number_format($n, 4);
// → 1,234,567.8910
// 区切り文字を変える
echo number_format($n, 2, '.', ','); // 1,234,567.89 (日本/英米)
echo number_format($n, 2, ',', '.'); // 1.234.567,89 (ヨーロッパ)
echo number_format($n, 2, ',', ' '); // 1 234 567,89 (フランス)
echo number_format($n, 2, '.', ''); // 1234567.89 (区切りなし)
echo number_format($n, 0, '', "'"); // 1'234'568 (スイス)
用途別レシピ
通貨表示 (日本円)
function yen(int $amount): string {
return '¥' . number_format($amount);
}
echo yen(1234567); // ¥1,234,567
echo yen(-500); // ¥-500
function yenSigned(int $amount): string {
$prefix = $amount >= 0 ? '+' : '';
return $prefix . '¥' . number_format($amount);
}
echo yenSigned(1000); // +¥1,000
echo yenSigned(-1000); // ¥-1,000
USD ($1,234.56)
function usd(float $amount): string {
return '$' . number_format($amount, 2);
}
echo usd(1234.5); // $1,234.50
echo usd(0.099); // $0.10 (四捨五入)
パーセント表示
function pct(float $rate, int $decimals = 1): string {
return number_format($rate * 100, $decimals) . '%';
}
echo pct(0.1234); // 12.3%
echo pct(0.05, 2); // 5.00%
echo pct(1, 0); // 100%
ファイルサイズ
function fileSize(int $bytes, int $decimals = 1): string {
$units = ['B', 'KB', 'MB', 'GB', 'TB'];
$i = 0;
while ($bytes >= 1024 && $i < count($units) - 1) {
$bytes /= 1024;
$i++;
}
return number_format($bytes, $decimals) . ' ' . $units[$i];
}
echo fileSize(1023); // 1,023.0 B
echo fileSize(1024 * 5); // 5.0 KB
echo fileSize(1024 * 1024 * 3); // 3.0 MB
丸めの挙動を制御する
number_format() は内部で四捨五入 (half away from zero) を行います。意図しない丸めを避けたければ事前に round() / floor() / ceil() を通す。
<?php
$n = 1234.5;
echo number_format($n, 0); // 1,235 四捨五入
echo number_format(floor($n), 0); // 1,234 切り捨て
echo number_format(ceil($n), 0); // 1,235 切り上げ
echo number_format(round($n, 0, PHP_ROUND_HALF_EVEN), 0); // 1,234 銀行家丸め
// 切り捨てを小数点指定
$n = 1234.987;
$cut2 = floor($n * 100) / 100;
echo number_format($cut2, 2); // 1,234.98 (切り捨て 2 桁)
NumberFormatter (Intl 拡張) でロケール対応
「アプリの利用者のロケールに合わせて表記を変えたい」場合は NumberFormatter が最適です。Intl 拡張 (php-intl) が必要。
<?php
$amount = 1234567.89;
// 数値表記
$f = new NumberFormatter('ja_JP', NumberFormatter::DECIMAL);
echo $f->format($amount); // 1,234,567.89
$f = new NumberFormatter('de_DE', NumberFormatter::DECIMAL);
echo $f->format($amount); // 1.234.567,89 ドイツ式
$f = new NumberFormatter('fr_FR', NumberFormatter::DECIMAL);
echo $f->format($amount); // 1 234 567,89 フランス式
// 通貨表記 (記号自動)
$f = new NumberFormatter('ja_JP', NumberFormatter::CURRENCY);
echo $f->format($amount); // ¥1,234,568 (円は通常小数なし)
$f = new NumberFormatter('en_US', NumberFormatter::CURRENCY);
echo $f->format($amount); // $1,234,567.89
$f = new NumberFormatter('en_GB', NumberFormatter::CURRENCY);
echo $f->format($amount); // £1,234,567.89
// 通貨コードを明示
$f = new NumberFormatter('ja_JP', NumberFormatter::CURRENCY);
echo $f->formatCurrency($amount, 'USD'); // $1,234,567.89 (ja_JP の表記で USD)
// パーセント
$f = new NumberFormatter('ja_JP', NumberFormatter::PERCENT);
echo $f->format(0.1234); // 12%
$f->setAttribute(NumberFormatter::MAX_FRACTION_DIGITS, 2);
echo $f->format(0.1234); // 12.34%
money_format() の代替
古い PHP の money_format() はPHP 7.4 で deprecated、8.0 で削除されました。NumberFormatter に置き換えます。
<?php
// ❌ PHP 8.0 以降エラー
// setlocale(LC_MONETARY, 'ja_JP.UTF-8');
// echo money_format('%n', 1234567);
// ✅ NumberFormatter で
$f = new NumberFormatter('ja_JP', NumberFormatter::CURRENCY);
echo $f->format(1234567);
JavaScript / Laravel との比較
JavaScript
// Intl.NumberFormat
new Intl.NumberFormat('ja-JP').format(1234567);
// → "1,234,567"
new Intl.NumberFormat('ja-JP', { style: 'currency', currency: 'JPY' }).format(1234567);
// → "¥1,234,567"
new Intl.NumberFormat('de-DE', { style: 'currency', currency: 'EUR' }).format(1234.5);
// → "1.234,50 €"
// 旧 toLocaleString も使える
(1234567).toLocaleString('ja-JP'); // "1,234,567"
Laravel Helper / Blade
// Laravel 10+ には Number ヘルパが追加
use Illuminate\Support\Number;
Number::format(1234567); // "1,234,567"
Number::format(1234.567, precision: 2); // "1,234.57"
Number::currency(1234.5, in: 'USD'); // "$1,234.50"
Number::currency(1234.5, in: 'JPY', locale: 'ja'); // "¥1,235"
Number::percentage(75.5); // "76%"
Number::fileSize(1024 * 1024 * 5); // "5 MB"
Number::ordinal(2); // "2nd"
// Blade
{{ number_format($order->total) }}
{{ Number::currency($order->total, 'JPY') }}
// 自前マクロも便利
@php
function yen($n) { return '¥' . number_format($n); }
@endphp
{{ yen(1234567) }}
大きい数 (整数オーバーフロー)
PHP の int は64bit プラットフォームで最大 9,223,372,036,854,775,807。これを超える場合、float 化される → number_format は内部で float→string 変換時に精度落ちのリスク。
<?php
echo number_format(PHP_INT_MAX);
// 9,223,372,036,854,775,807
echo number_format(PHP_INT_MAX + 1);
// 9,223,372,036,854,775,808 程度。実際は float なので末尾が誤差
// 任意精度なら GMP / BCMath を使い、文字列レベルでカンマ挿入
function bigComma(string $num): string {
$sign = ($num[0] === '-') ? '-' : '';
if ($sign) $num = substr($num, 1);
[$int, $frac] = array_pad(explode('.', $num, 2), 2, '');
$int = strrev(implode(',', str_split(strrev($int), 3)));
return $sign . $int . ($frac !== '' ? '.' . $frac : '');
}
echo bigComma('99999999999999999999999');
// 99,999,999,999,999,999,999,999
FAQ
Q: 小数桁を「最大 2 桁、不要なゼロは省く」したい
A: number_format($n, 2) だと末尾ゼロが残ります。rtrim(rtrim(number_format($n, 2), '0'), '.') でゼロと小数点を消すか、NumberFormatter の MAX_FRACTION_DIGITS を使う。
Q: マイナス値の符号を括弧表記 (1,234) にしたい (会計式)
A: NumberFormatter::CURRENCY_ACCOUNTING スタイルや手書きで $n < 0 ? '(' . number_format(-$n) . ')' : number_format($n)。
Q: 数値文字列を渡すと警告が出る
A: PHP 8.x では完全な数値文字列のみ受け付けます。number_format('1234abc') は TypeError や非数値警告に。事前に (float) キャストか filter_var($x, FILTER_VALIDATE_FLOAT) でバリデーション。
Q: number_format(null) はどうなる?
A: PHP 8.1 以降は非推奨警告、8.x 後半でエラー化予定。number_format($x ?? 0) のように事前にデフォルト化を。
ページの作成
親となるページを選択してください。
親ページに紐づくページを子ページといいます。
例: 親=スポーツ, 子1=サッカー, 子2=野球
子ページを親ページとして更に子ページを作成することも可能です。
例: 親=サッカー, 子=サッカーのルール
親ページはいつでも変更することが可能なのでとりあえず作ってみましょう!
子ページはありません
- リダイレクト(header)
- 文字列の置換(replace)
- 数値のカンマ区切り(number_format)
人気ページ
- 1 Eclipseで「サーバーに追加または除去できるリソースがありません。」の原因と対処法
- 2 tomcat の起動 / 停止ログと catalina.log・catalina.out の違い
- 3 JavaScript base URL 取得方法|window.location.origin と SSR/Node.js 対応
- 4 YouTube Data API v3 エラー一覧|403/400/404 の主要原因と切り分け
- 5 Spring Frameworkのアノテーション一覧
- 6 Laravel エラー一覧|500/Blade/DB 接続/ルーティングの代表エラー
- 7 3Dグラフィックスとは|モデリング/レンダリング/主要ソフトウェア (Blender / Maya)
- 8 【Spring】@Valueアノテーションとは
- 9 CATALINA_HOME の確認方法 (Linux / Mac)
- 10 【Spring】@Autowiredアノテーションとは
最近更新/作成されたページ
- IPv6とは|128bitアドレス・コロン16進表記/::省略・リンクローカル・SLAAC・デュアルスタック NEW 2026-06-22 12:34:44
- MAC アドレスフィルタリングの仕組みと限界 | ネットワーク入門 NEW 2026-06-22 12:19:10
- VPNとは|暗号トンネル・サイト間/リモートアクセス・IPsec/SSL-VPN/WireGuardを解説 NEW 2026-06-22 12:19:10
- WebRTC とは ブラウザ間 P2P の音声・映像・データ通信 | ネットワーク入門 NEW 2026-06-22 12:17:25
- HTTP/2 とは 多重化・HPACK・バイナリフレーム | ネットワーク入門 NEW 2026-06-22 12:17:25
- Web通信プロトコル入門 HTTP/2・HTTP/3・WebSocket・gRPC・WebRTC | ネットワーク入門 NEW 2026-06-22 12:17:25
- gRPC とは HTTP/2 + Protocol Buffers の高速 RPC | ネットワーク入門 NEW 2026-06-22 12:17:25
- HTTP/3 (QUIC) とは UDP ベースの低遅延 Web 通信 | ネットワーク入門 NEW 2026-06-22 12:17:25
- WebSocket とは 全二重リアルタイム通信 ws/wss | ネットワーク入門 NEW 2026-06-22 12:17:25
- 証明書と認証局(CA)とは|X.509・信頼チェーン・DV/OV/EV・失効(CRL/OCSP)を解説 NEW 2026-06-22 12:17:24
- ファイアウォールとは|パケットフィルタ・ステートフル・DMZ・次世代FW(L4/L7)を解説 NEW 2026-06-22 12:17:24
- iptables/nftablesとは|テーブル・チェーン・ルール例・永続化をLinux視点で解説 NEW 2026-06-22 12:17:24
- HAProxy とは frontend/backend と設定例 | ネットワーク入門 NEW 2026-06-22 12:17:24
- CDN とは エッジキャッシュ・TTL・Cloudflare/CloudFront | ネットワーク入門 NEW 2026-06-22 12:17:24
- TLS/SSLの仕組み|ハンドシェイク・暗号スイート・前方秘匿性・証明書検証をわかりやすく解説 NEW 2026-06-22 12:17:24
コメントを削除してもよろしいでしょうか?