@@ -8,26 +8,24 @@ module LinuxStat
8
8
9
9
module PrettifyBytes
10
10
# Kilo = Kilobyte (1000 - 1), and so on...
11
- # 8.times { |x| puts 1000.**(x.next).to_s << '.00' }
12
- KILO = 1000.00
13
- MEGA = 1000000.00
14
- GIGA = 1000000000.00
15
- TERA = 1000000000000.00
16
- PETA = 1000000000000000.00
17
- EXA = 1000000000000000000.00
18
- ZETTA = 1000000000000000000000.00
19
- YOTTA = 1000000000000000000000000.00
11
+ KILO = 1e3
12
+ MEGA = 1e6
13
+ GIGA = 1e9
14
+ TERA = 1e12
15
+ PETA = 1e15
16
+ EXA = 1e18
17
+ ZETTA = 1e21
18
+ YOTTA = 1e24
20
19
21
20
# Binary suffixes
22
- # 8.times { |x| puts 1024.**(x.next).to_s << '.00' }
23
- KIBI = 1024.00
24
- MEBI = 1048576.00
25
- GIBI = 1073741824.00
26
- TEBI = 1099511627776.00
27
- PEBI = 1125899906842624.00
28
- EXBI = 1152921504606846976.00
29
- ZEBI = 1180591620717411303424.00
30
- YOBI = 1208925819614629174706176.00
21
+ KIBI = 1024.0
22
+ MEBI = KIBI ** 2
23
+ GIBI = KIBI ** 3
24
+ TEBI = KIBI ** 4
25
+ PEBI = KIBI ** 5
26
+ EXBI = KIBI ** 6
27
+ ZEBI = KIBI ** 7
28
+ YOBI = KIBI ** 8
31
29
32
30
class << self
33
31
##
@@ -50,28 +48,36 @@ def convert_decimal(n, precision: 2)
50
48
"#{ "%.#{ precision } f" % n } byte#{ ?s. freeze if n != 1 } "
51
49
elsif n < MEGA
52
50
n /= KILO
53
- "#{ "%.#{ precision } f" % n } kilobyte#{ ?s. freeze if n != 1 } "
51
+ n = n . round ( precision )
52
+ %(#{ "%.#{ precision } f" % n } kilobyte#{ ?s. freeze if n . != 1 } )
54
53
elsif n < GIGA
55
54
n /= MEGA
56
- "#{ "%.#{ precision } f" % n } megabyte#{ ?s. freeze if n != 1 } "
55
+ n = n . round ( precision )
56
+ %(#{ "%.#{ precision } f" % n } megabyte#{ ?s. freeze if n != 1 } )
57
57
elsif n < TERA
58
58
n /= GIGA
59
- "#{ "%.#{ precision } f" % n } gigabyte#{ ?s. freeze if n != 1 } "
59
+ n = n . round ( precision )
60
+ %(#{ "%.#{ precision } f" % n } gigabyte#{ ?s. freeze if n != 1 } )
60
61
elsif n < PETA
61
62
n /= TERA
62
- "#{ "%.#{ precision } f" % n } terabyte#{ ?s. freeze if n != 1 } "
63
+ n = n . round ( precision )
64
+ %(#{ "%.#{ precision } f" % n } terabyte#{ ?s. freeze if n != 1 } )
63
65
elsif n < EXA
64
66
n /= PETA
65
- "#{ "%.#{ precision } f" % n } petabyte#{ ?s. freeze if n != 1 } "
67
+ n = n . round ( precision )
68
+ %(#{ "%.#{ precision } f" % n } petabyte#{ ?s. freeze if n != 1 } )
66
69
elsif n < ZETTA
67
70
n /= EXA
68
- "#{ "%.#{ precision } f" % n } exabyte#{ ?s. freeze if n != 1 } "
71
+ n = n . round ( precision )
72
+ %(#{ "%.#{ precision } f" % n } exabyte#{ ?s. freeze if n != 1 } )
69
73
elsif n < YOTTA
70
74
n /= ZETTA
71
- "#{ "%.#{ precision } f" % n } zettabyte#{ ?s. freeze if n != 1 } "
75
+ n = n . round ( precision )
76
+ %(#{ "%.#{ precision } f" % n } zettabyte#{ ?s. freeze if n != 1 } )
72
77
else
73
78
n /= YOTTA
74
- "#{ "%.#{ precision } f" % n } yottabyte#{ ?s. freeze if n != 1 } "
79
+ n = n . round ( precision )
80
+ %(#{ "%.#{ precision } f" % n } yottabyte#{ ?s. freeze if n != 1 } )
75
81
end
76
82
end
77
83
@@ -91,31 +97,39 @@ def convert_decimal(n, precision: 2)
91
97
# => "1.0 gibibyte"
92
98
def convert_binary ( n , precision : 2 )
93
99
if n < KIBI
94
- " #{ "%.#{ precision } f" % n } byte#{ ?s. freeze if n != 1 } "
100
+ %Q( #{ "%.#{ precision } f" % n } byte#{ ?s. freeze if n != 1 } )
95
101
elsif n < MEBI
96
102
n /= KIBI
97
- "#{ "%.#{ precision } f" % n } kibibyte#{ ?s. freeze if n != 1 } "
103
+ n = n . round ( precision )
104
+ %Q(#{ "%.#{ precision } f" % n } kibibyte#{ ?s. freeze if n != 1 } )
98
105
elsif n < GIBI
99
106
n /= MEBI
100
- "#{ "%.#{ precision } f" % n } mebibyte#{ ?s. freeze if n != 1 } "
107
+ n = n . round ( precision )
108
+ %Q(#{ "%.#{ precision } f" % n } mebibyte#{ ?s. freeze if n != 1 } )
101
109
elsif n < TEBI
102
110
n /= GIBI
103
- "#{ "%.#{ precision } f" % n } gibibyte#{ ?s. freeze if n != 1 } "
111
+ n = n . round ( precision )
112
+ %Q(#{ "%.#{ precision } f" % n } gibibyte#{ ?s. freeze if n != 1 } )
104
113
elsif n < PEBI
105
114
n /= TEBI
106
- "#{ "%.#{ precision } f" % n } tebibyte#{ ?s. freeze if n != 1 } "
115
+ n = n . round ( precision )
116
+ %Q(#{ "%.#{ precision } f" % n } tebibyte#{ ?s. freeze if n != 1 } )
107
117
elsif n < EXBI
108
118
n /= PEBI
109
- "#{ "%.#{ precision } f" % n } pebibyte#{ ?s. freeze if n != 1 } "
119
+ n = n . round ( precision )
120
+ %Q(#{ "%.#{ precision } f" % n } pebibyte#{ ?s. freeze if n != 1 } )
110
121
elsif n < ZEBI
111
122
n /= EXBI
112
- "#{ "%.#{ precision } f" % n } exbiyte#{ ?s. freeze if n != 1 } "
123
+ n = n . round ( precision )
124
+ %Q(#{ "%.#{ precision } f" % n } exbiyte#{ ?s. freeze if n != 1 } )
113
125
elsif n < YOBI
114
126
n /= ZEBI
115
- "#{ "%.#{ precision } f" % n } zebibyte#{ ?s. freeze if n != 1 } "
127
+ n = n . round ( precision )
128
+ %Q(#{ "%.#{ precision } f" % n } zebibyte#{ ?s. freeze if n != 1 } )
116
129
else
117
130
n /= YOBI
118
- "#{ "%.#{ precision } f" % n } yobibyte#{ ?s. freeze if n != 1 } "
131
+ n = n . round ( precision )
132
+ %Q(#{ "%.#{ precision } f" % n } yobibyte#{ ?s. freeze if n != 1 } )
119
133
end
120
134
end
121
135
@@ -137,29 +151,21 @@ def convert_short_decimal(n, precision: 2)
137
151
if n < KILO
138
152
"#{ "%.#{ precision } f" % n } B"
139
153
elsif n < MEGA
140
- n /= KILO
141
- "#{ "%.#{ precision } f" % n } kB"
154
+ %(#{ "%.#{ precision } f" % n . fdiv ( KILO ) } kB)
142
155
elsif n < GIGA
143
- n /= MEGA
144
- "#{ "%.#{ precision } f" % n } MB"
156
+ %(#{ "%.#{ precision } f" % n . fdiv ( MEGA ) } MB)
145
157
elsif n < TERA
146
- n /= GIGA
147
- "#{ "%.#{ precision } f" % n } GB"
158
+ %(#{ "%.#{ precision } f" % n . fdiv ( GIGA ) } GB)
148
159
elsif n < PETA
149
- n /= TERA
150
- "#{ "%.#{ precision } f" % n } TB"
160
+ %(#{ "%.#{ precision } f" % n . fdiv ( TERA ) } TB)
151
161
elsif n < EXA
152
- n /= PETA
153
- "#{ "%.#{ precision } f" % n } PB"
162
+ %(#{ "%.#{ precision } f" % n . fdiv ( PETA ) } PB)
154
163
elsif n < ZETTA
155
- n /= EXA
156
- "#{ "%.#{ precision } f" % n } EB"
164
+ %(#{ "%.#{ precision } f" % n . fdiv ( EXA ) } EB)
157
165
elsif n < YOTTA
158
- n /= ZETTA
159
- "#{ "%.#{ precision } f" % n } ZB"
166
+ %(#{ "%.#{ precision } f" % n . fdiv ( ZETTA ) } ZB)
160
167
else
161
- n /= YOTTA
162
- "#{ "%.#{ precision } f" % n } YB"
168
+ %(#{ "%.#{ precision } f" % n . fdiv ( YOTTA ) } YB)
163
169
end
164
170
end
165
171
@@ -181,31 +187,23 @@ def convert_short_decimal(n, precision: 2)
181
187
# => "1.0 GiB"
182
188
def convert_short_binary ( n , precision : 2 )
183
189
if n < KIBI
184
- " #{ "%.#{ precision } f" % n } B"
190
+ %( #{ "%.#{ precision } f" % n } B)
185
191
elsif n < MEBI
186
- n /= KIBI
187
- "#{ "%.#{ precision } f" % n } KiB"
192
+ %(#{ "%.#{ precision } f" % n . fdiv ( KIBI ) } KiB)
188
193
elsif n < GIBI
189
- n /= MEBI
190
- "#{ "%.#{ precision } f" % n } MiB"
194
+ %(#{ "%.#{ precision } f" % n . fdiv ( MEBI ) } MiB)
191
195
elsif n < TEBI
192
- n /= GIBI
193
- "#{ "%.#{ precision } f" % n } GiB"
196
+ %(#{ "%.#{ precision } f" % n . fdiv ( GIBI ) } GiB)
194
197
elsif n < PEBI
195
- n /= TEBI
196
- "#{ "%.#{ precision } f" % n } TiB"
198
+ %(#{ "%.#{ precision } f" % n . fdiv ( TEBI ) } TiB)
197
199
elsif n < EXBI
198
- n /= PEBI
199
- "#{ "%.#{ precision } f" % n } PiB"
200
+ %(#{ "%.#{ precision } f" % n . fdiv ( PEBI ) } PiB)
200
201
elsif n < ZEBI
201
- n /= EXBI
202
- "#{ "%.#{ precision } f" % n } EiB"
202
+ %(#{ "%.#{ precision } f" % n . fdiv ( EXBI ) } EiB)
203
203
elsif n < YOBI
204
- n /= ZEBI
205
- "#{ "%.#{ precision } f" % n } ZiB"
204
+ %(#{ "%.#{ precision } f" % n . fdiv ( ZEBI ) } ZiB)
206
205
else
207
- n /= YOBI
208
- "#{ "%.#{ precision } f" % n } YiB"
206
+ %(#{ "%.#{ precision } f" % n . fdiv ( YOBI ) } YiB)
209
207
end
210
208
end
211
209
end
0 commit comments