素早いGoogle検索でAppache hadoopプロジェクトからthisが返されました。そこからコピー: (Apacheライセンス、バージョン2.0):
private static DecimalFormat oneDecimal = new DecimalFormat("0.0");
/**
* Given an integer, return a string that is in an approximate, but human
* readable format.
* It uses the bases 'k', 'm', and 'g' for 1024, 1024**2, and 1024**3.
* @param number the number to format
* @return a human readable form of the integer
*/
public static String humanReadableInt(long number) {
long absNumber = Math.abs(number);
double result = number;
String suffix = "";
if (absNumber < 1024) {
// nothing
} else if (absNumber < 1024 * 1024) {
result = number/1024.0;
suffix = "k";
} else if (absNumber < 1024 * 1024 * 1024) {
result = number/(1024.0 * 1024);
suffix = "m";
} else {
result = number/(1024.0 * 1024 * 1024);
suffix = "g";
}
return oneDecimal.format(result) + suffix;
}
それは1K = 1024を使用しますが、ご希望の場合は、これを適応させることができます。また、別のDecimalFormatを使用して< 1024のケースを処理する必要があります。
はhttp://stackoverflow.com/を見ます質問/ 3758606 /より洗練されたソリューションのためのバイト・サイズから人間が読める形式のJavaへの変換方法 – Niko