2 * Copyright (C) 2005 The Mir-coders group
4 * This file is part of Mir.
6 * Mir is free software; you can redistribute it and/or modify
7 * it under the terms of the GNU General Public License as published by
8 * the Free Software Foundation; either version 2 of the License, or
9 * (at your option) any later version.
11 * Mir is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 * GNU General Public License for more details.
16 * You should have received a copy of the GNU General Public License
17 * along with Mir; if not, write to the Free Software
18 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
20 * In addition, as a special exception, The Mir-coders gives permission to link
21 * the code of this program with any library licensed under the Apache Software License.
22 * You must obey the GNU General Public License in all respects for all of the code used
23 * other than the above mentioned libraries. If you modify this file, you may extend this
24 * exception to your version of the file, but you are not obligated to do so.
25 * If you do not wish to do so, delete this exception statement from your version.
29 import java.text.NumberFormat;
32 * Help methods for number handling.
34 * @version $Id: NumberUtils.java,v 1.5.2.2 2005/12/24 11:43:36 zapata Exp $
35 * @author mh, Mir-coders group
39 public final class NumberUtils {
40 private NumberUtils() {
44 * Uses a suffix indicating multiples of 1024 (K),
45 * 1024*1024 (M), and 1024*1024*1024 (G). For example,
46 * 8500 would be converted to 8.3K, 133456345 to
47 * 127M, 56990456345 to 53G, and so on. Numbers
48 * smaller than 1024 aren't modified.
50 * @param bytes The number of bytes.
51 * @return A text representation of the number of bytes,
52 * abbreviated for larger quantities.
54 public static String humanReadableSize(double aBytes) {
55 double bytes = aBytes;
58 if ( bytes >= (double) (1024 * 1024 * 1024) ) {
59 bytes /= (double) (1024 * 1024 * 1024);
62 else if( bytes >= (double) (1024 * 1024) ) {
63 bytes /= (double) (1024 * 1024);
66 else if( bytes >= 1024.0 ) {
73 int frac = bytes > 9.5 || bytes < 0.05 ? 0 : 1;
75 NumberFormat nf = NumberFormat.getInstance();
76 nf.setMinimumFractionDigits(frac);
77 nf.setMaximumFractionDigits(frac);
78 nf.setGroupingUsed(false);
80 return nf.format(bytes) + suffix;