コンピューターサイエンス入門:理論編
ディスクサイズフォーマット
この回でやること
容量表示の単位の選び方を読み解き、境目と小数の桁数を確かめます。
- 読む 約 7 分
- 最後にクイズ 1 問
一覧に 12345678 と出ていると、読む側は毎回桁を数えることになります。1024ごとに単位を変えて 11.8 MB と書けば一目です。数字と単位をどう選び、どこで丸めるかを読み解きます。
桁数だけでは境目を選べない
1000と1024は、どちらも4桁ですが、1024ごとの表示では前者はB、後者はKBになります。数字の桁数だけでは、正しい単位を選べません。単位の境目は「いまの数値が1024以上か」で判断します。この回では B、KB、MB、GB、TB の順に使います。
厳密には1024ごとの単位はKiBなどと書きますが、ここでは前の回と同じくKBなどの表記を使います。数え方と表示の約束をそろえて読んでください。
何回割ったかで単位が決まる
最初はバイトの値とBを組にして持ちます。値が1024以上なら1024で割り、単位も1つ上げます。まだ1024以上なら、もう1回同じことをします。0回ならB、1回ならKB、2回ならMBです。
割った回数だけでなく、割った後の値も追います。これが最後に表示する数字になります。たとえば2048バイトなら、1回割って2 KBです。2は1024未満なので、ここで止まります。0バイトは割る必要がなく、Bのままです。
表示を丸めるのは最後
単位を選び終えたら、小数第1位まで表示します。1.0 KB と 1 KB は同じ量ですが、表示の桁数は違います。一覧でそろえるなら、整数の値にも小数第1位を付けます。
JavaScript
console.log((2).toFixed(1)); // "2.0"
console.log((1.5).toFixed(1)); // "1.5"toFixed(1) は小数第1位までの文字列にします。途中で丸めると、境目に近い値を誤った単位へ進めてしまう場合があります。元の値で単位を決めてから、見せる桁数をそろえます。
Javaの
String.format("%.1f", v)は、地域の設定によって小数点がカンマになります。Locale.USを明示すると、小数点をピリオドにそろえられます。
例題で確かめる
1572864バイトのファイルを、1024ごとの単位と小数第1位で表示します。
| 手順 | 数値 | 単位 |
|---|---|---|
| 最初 | 1572864 | B |
| 1回割る | 1536 | KB |
| 2回割る | 1.5 | MB |
1536は1024以上なので、KBで止めずにもう1回割ります。1.5は1024未満なのでMBで止め、答えは 1.5 MB です。最初のバイト数と、割った回数と単位の対応を確かめれば、表示の大きさを読み違えずに済みます。