ループをまったく使用しない Java 用の非常に洗練された「ヒューマナイズ」コンバーターを stackoverflow で見つけました。
JavaScriptで同じことをすることは可能ですか?(例: 1024 バイト => 1 kb)?
シンプルに聞こえるかもしれませんが、私はそれをかなり検索しました
ご参考までに : Java バージョン
ループをまったく使用しない Java 用の非常に洗練された「ヒューマナイズ」コンバーターを stackoverflow で見つけました。
JavaScriptで同じことをすることは可能ですか?(例: 1024 バイト => 1 kb)?
シンプルに聞こえるかもしれませんが、私はそれをかなり検索しました
ご参考までに : Java バージョン
function byteCount (bytes, unit) {
if (bytes < (unit = unit || 1000))
return bytes + " B";
var exp = Math.floor (Math.log (bytes) / Math.log (unit));
var pre = ' ' +(unit === 1000 ? "kMGTPE" : "KMGTPE").charAt (exp - 1) + (unit === 1000 ? "" : "i") + 'B';
return (bytes / Math.pow (unit, exp)).toFixed (1) + pre;
}
[ 0, 27, 999, 1000, 1023, 1024, 1728, 110592, 7077888,
452984832, 28991029248, 1855425871872, 9223372036854775807].forEach (
function (v) { console.log (v, byteCount (v), byteCount (v, 1024)); });
/* Displays :
0 "0 B" "0 B"
27 "27 B" "27 B"
999 "999 B" "999 B"
1000 "1.0 kB" "1000 B"
1023 "1.0 kB" "1023 B"
1024 "1.0 kB" "1.0 KiB"
1728 "1.7 kB" "1.7 KiB"
110592 "110.6 kB" "108.0 KiB"
7077888 "7.1 MB" "6.8 MiB"
452984832 "453.0 MB" "432.0 MiB"
28991029248 "29.0 GB" "27.0 GiB"
1855425871872 "1.9 TB" "1.7 TiB"
9223372036854776000 "9.2 EB" "8.0 EiB" */
Java バージョンの結果テーブルに、7.1 MB ではなく 7.1 KB と表示されるエラーがあることに注意してください。
現在、JS 用の非常に優れた Humanize ライブラリがいくつかあります。以下を参照することをお勧めします。
ご覧になりたい場合は、https://github.com/taijinlee/humanizeもあります。